关闭iOS通知内容扩展中的键盘
我通过通知内容扩展目标在iOS 11通知窗口中显示自定义操作按钮。其中一个是“评论”按钮。如果我按下它,键盘会正确显示,但我无法想出如何让键盘离开并返回到通知上的其他按钮。我看不到任何东西可以调用关闭iOS通知内容扩展中的键盘,ios,swift,apple-push-notifications,Ios,Swift,Apple Push Notifications,我通过通知内容扩展目标在iOS 11通知窗口中显示自定义操作按钮。其中一个是“评论”按钮。如果我按下它,键盘会正确显示,但我无法想出如何让键盘离开并返回到通知上的其他按钮。我看不到任何东西可以调用resignFirstResponder。我只是错过了一些非常明显的东西吗?有多种方法可以做到这一点 不带内容扩展名 第一个甚至不需要通知内容扩展!UNTextInputNotificationAction为您完成所有工作。初始化操作时,请为触发操作时显示的文本字段指定参数。在注册期间,该操作会附加到您
resignFirstResponder
。我只是错过了一些非常明显的东西吗?有多种方法可以做到这一点
不带内容扩展名
第一个甚至不需要通知内容扩展!UNTextInputNotificationAction
为您完成所有工作。初始化操作时,请为触发操作时显示的文本字段指定参数。在注册期间,该操作会附加到您的通知类别中(即,在内,将使用选项完成启动)
:
产生如下结果:
请记住,在iOS 10和iOS 11上,任何点击通知本身的行为——就像点击文本字段一样——都可能导致通知被驳回!出于这个原因和许多其他原因,走这条路线可能是不可取的。有多种方法可以做到这一点 不带内容扩展名 第一个甚至不需要通知内容扩展!
UNTextInputNotificationAction
为您完成所有工作。初始化操作时,请为触发操作时显示的文本字段指定参数。在注册期间,该操作会附加到您的通知类别中(即,在内,将使用选项完成启动)
:
产生如下结果:
请记住,在iOS 10和iOS 11上,任何点击通知本身的行为——就像点击文本字段一样——都可能导致通知被驳回!出于这一点和其他许多原因,采用这种方法可能是不可取的。这是使用UNTextInputNotificationAction吗?是的,这就是我正在使用的。这是使用UNTextInputNotificationAction吗?是的,这就是我正在使用的。所以我只需要定义一个返回一个
UITextField的inputAccessoryView
?看起来很容易。我明天再做。多谢。一旦我让它工作,我会回来,并标记这个答案。你能展示一个如何生成文本字段的例子吗?出于某种原因,我一直在努力纠正这一部分。在我输入文本并说submits之后,如何在该部分中添加一个按钮以关闭通知并将其删除,以便我只需要定义一个返回UITextField
的inputAccessoryView
?看起来很容易。我明天再做。多谢。一旦我让它工作,我会回来,并标记这个答案。你能展示一个如何生成文本字段的例子吗?出于某种原因,我正在努力使这一部分正确。我如何在这里面添加一个按钮来关闭通知,并在我输入文本并说提交后将其删除
userNotificationCenter.getNotificationCategories { (categories) in
var categories: Set<UNNotificationCategory> = categories
let inputAction: UNTextInputNotificationAction = UNTextInputNotificationAction(identifier: "org.quellish.textInput", title: "Comment", options: [], textInputButtonTitle: "Done", textInputPlaceholder: "This is awesome!")
let category: UNNotificationCategory = UNNotificationCategory(identifier: notificationCategory, actions: [inputAction], intentIdentifiers: [], hiddenPreviewsBodyPlaceholder: "Placeholder", options: [])
categories.insert(category)
userNotificationCenter.setNotificationCategories(categories)
}
override var canBecomeFirstResponder: Bool {
get {
return true
}
}
func didReceive(_ notification: UNNotification) {
self.label?.text = notification.request.content.body
self.textField?.delegate = self
self.becomeFirstResponder()
self.textField?.becomeFirstResponder()
return
}
// UITextFieldDelegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.textField?.resignFirstResponder()
self.resignFirstResponder()
return true
}