【发布时间】:2015-07-26 16:04:48
【问题描述】:
我设置了一个手势识别器,用于在用户在文本字段外点击时关闭键盘。 DismissKeyboard 函数没有被调用。
我是否设置了错误的观察者或者这是一个不同的问题?另外,这是一个正在被点击的 tableview。
代码摘录
class CommentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
NSNotificationCenter.defaultCenter().addObserver(self,
selector: Selector("keyboardWillShow:"),
name: UIKeyboardWillShowNotification,
object: nil)
NSNotificationCenter.defaultCenter().addObserver(self,
selector: Selector("keyboardWillHide:"),
name: UIKeyboardWillHideNotification,
object: nil)
}
func keyboardFrameChanged(notification: NSNotification) {
println("keyboardFrameChanged")
let userInfo = notification.userInfo
let key = UIKeyboardFrameEndUserInfoKey
if let info = userInfo {
let frameValue = info[key] as! NSValue
let _frame = frameValue.CGRectValue()
}
}
func keyboardWillShow(notification: NSNotification) {
if keyboardDismissTapGesture == nil
{
println("dismiss")
keyboardDismissTapGesture = UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard:"))
self.view.addGestureRecognizer(keyboardDismissTapGesture!)
}
}
func keyboardWillHide(notification: NSNotification) {
if keyboardDismissTapGesture != nil
{
println("test2")
self.view.removeGestureRecognizer(keyboardDismissTapGesture!)
keyboardDismissTapGesture = nil
}
}
func dismissKeyboard(sender: AnyObject) {
println("dismiss keyboard")
commentTextField.resignFirstResponder()
}
我在dismissKeyboard 处设置了一个断点,但它甚至没有被调用。
输出
当我点击文本视图并打开键盘时,这是输出
keyboardFrameChanged
keyboardFrameChanged
will show
dismiss
当我点击其他任何东西(试图关闭键盘)时,没有进一步的输出。
【问题讨论】:
-
是否调用了键盘显示和隐藏的通知?
-
我会考虑放置一些
println()语句,而不是断点,然后看看它有多远。你能帮我们做吗? -
@chedabob 是的,keyboardWillShow 正在被调用。
-
@LinusG。当然,但我已经在每个函数中都有 println 语句。我还应该在哪里添加它们?
-
没错,但如果你不显示输出,它们对我们来说毫无用处;)
标签: ios swift uigesturerecognizer