나는 SpaceOTechnologies
에서 EKEventEditViewController
코드는 Andrew Bancroft에서 해제되고 서브 클래스에 의해이 문제를 해결하고 코드는 다음과 같습니다
import UIKit
import EventKit
import EventKitUI
class AddEventViewController: UIViewController, UITextFieldDelegate{
var calendar: EKCalendar!
@IBOutlet weak var eventNameTextField: UITextField!
@IBOutlet weak var eventStartDatePicker: UIDatePicker!
@IBOutlet weak var eventEndDatePicker: UIDatePicker!
var delegate: EventAddedDelegate?
override func viewDidLoad() {
super.viewDidLoad()
self.eventStartDatePicker.setDate(initialDatePickerValue(), animated: false)
self.eventEndDatePicker.setDate(initialDatePickerValue(), animated: false)
}
func initialDatePickerValue() -> Date {
eventNameTextField.resignFirstResponder()
let calendarUnitFlags: NSCalendar.Unit = [.year, .month, .day, .hour, .minute, .second]
var dateComponents = (Calendar.current as NSCalendar).components(calendarUnitFlags, from: Date())
dateComponents.hour = 0
dateComponents.minute = 0
dateComponents.second = 0
if eventStartDatePicker.isFirstResponder == true {
eventStartDatePicker.resignFirstResponder()
}
if eventEndDatePicker.isFirstResponder == true {
eventEndDatePicker.resignFirstResponder()
}
return Calendar.current.date(from: dateComponents)!
}
@IBAction func cancelButtonTapped(_ sender: UIBarButtonItem) {
self.dismiss(animated: true, completion: nil)
}
@IBAction func addEventButtonTapped(_ sender: UIBarButtonItem) {
// Create an Event Store instance
let eventStore = EKEventStore()
let calendars = eventStore.calendars(for: EKEntityType.event)
for calendar in calendars {
if calendar.title == "PhotoBase" {
let newEvent = EKEvent(eventStore: eventStore)
newEvent.calendar = calendar
newEvent.title = self.eventNameTextField.text ?? "Some Event Name"
newEvent.startDate = self.eventStartDatePicker.date
newEvent.endDate = self.eventEndDatePicker.date
// Save the event using the Event Store instance
do {
try eventStore.save(newEvent, span: .thisEvent, commit: true)
delegate?.eventDidAdd()
self.dismiss(animated: true, completion: nil)
} catch {
let alert = UIAlertController(title: "Event could not save", message: (error as NSError).localizedDescription, preferredStyle: .alert)
let OKAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(OKAction)
self.present(alert, animated: true, completion: nil)
}
}
}
}
func textFieldDidEndEditing(_ textField: UITextField) {
eventNameTextField.resignFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print(#file, #function)
textField.resignFirstResponder();
return true;
}
나는 개선에 열려있어!