2

В конце Advanced Notification Session 708 WWDC 2016. Они говорили о принятии текстового ввода & в то же время.Пользовательский аксессуар для аксессуаров Уведомление

Начало 24 мин марки WWDC сессии 708.

Где вы берете комментарии партии пригласить & принять или отклонить пригласить одновременно. Я пытался это сделать, но очень неудачно.

class NotificationViewController: UIViewController, UNNotificationContentExtension { 

var textField = UITextField(frame: CGRect(x: 0, y: 0, width: 100, height: 10)) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any required interface initialization here. 
} 

override var canBecomeFirstResponder: Bool { 

    return true 
} 

override var inputAccessoryView: UIView? { 

    let customView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40)) 

    customView.backgroundColor = UIColor.red 

    textField.placeholder = "Type Comment here" 

    textField.textColor = UIColor.black 

    customView.addSubview(textField) 

    print(customView) 

    return customView 
} 

func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) { 

     if response.actionIdentifier == "comment" { 

     becomeFirstResponder() 

     textField.becomeFirstResponder() 

     print("Its working") 

     if let textResponse = response as? UNTextInputNotificationResponse { 

      print(textResponse.userText) 

      completion(UNNotificationContentExtensionResponseOption.doNotDismiss) 
     } 

     completion(UNNotificationContentExtensionResponseOption.doNotDismiss) 
    } 
} 

}

ответ

2

Не уверен, что именно то, что ваша проблема, но в последнее время я сталкивался с подобной задачей - и я успешно реализовал решение от вашего упомянутого WWDC разговора.
Моя проблема заключалась в том, что я не знал, как отклонить уведомление при использовании пользовательского inputAccessoryView. Мое решение состояло в том, чтобы сохранить completionHandler, а затем вызвать его, когда нажата конкретная кнопка в моем обычном inputAccessoryView.

Первый; создайте функциональную переменную для сохранения функции завершения:

var savedCompletionBlock:(UNNotificationContentExtensionResponseOption) -> Void = { (UNNotificationContentExtensionResponseOption) in } 

Затем; в func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) сохранить блок завершения:

savedCompletionBlock = completion 

И, наконец, называть его там, где вам нужно (например, на нажатие кнопки):

func confirmPressed() { 
    savedCompletionBlock(.dismiss) 
} 

Если это не поможет, дайте мне знать :)

Смежные вопросы