My code uses a datePicker and prints successT when the datePicker matches with what the user selected. However the userNotification does not appear and is never called when the word successT is printed in the log file which is how I would like it
import UIKit
import UserNotifications
class ViewController: UIViewController {
var timer = Timer()
var passingDate : Date?
@IBOutlet var dptext: UITextField!
let datePicker = UIDatePicker()
override func viewDidLoad() {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert,.sound,.badge]) { (didAllow, error) in
}
createDatePicker()
timer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(ViewController.testDate), userInfo: nil, repeats: true)
}
func createDatePicker() {
datePicker.datePickerMode = .dateAndTime
let toolbar = UIToolbar()
toolbar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
toolbar.setItems([doneButton], animated: false)
dptext.inputAccessoryView = toolbar
dptext.inputView = datePicker
}
@objc func testDate() {
if Calendar.current.isDate(datePicker.date, equalTo: Date(), toGranularity: .minute) {
print("successT")
passingDate = datePicker.date
let content = UNMutableNotificationContent()
content.title = "3 seconds are up"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger )
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
}
@objc func donePressed() {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short
dateFormatter.timeStyle = .short
dptext.text = dateFormatter.string(from: datePicker.date)
self.view.endEditing(true)
}
}
Aucun commentaire:
Enregistrer un commentaire