gpt4 book ai didi

ios - 当我按下返回键时,keyboardWillShowNotification 被触发(仅在我第一次按下它时)

转载 作者:行者123 更新时间:2023-11-29 05:50:15 26 4
gpt4 key购买 nike

我有一个非常奇怪的问题,当我按回车键时会发生这种情况,并且只有当我第一次按回车键时才会发生这种情况,每次下一次它都会按预期工作。

我有一个简单的类来管理键盘,它接受我拒绝委托(delegate)给我的类的文本字段数组,我还注册了键盘通知:

    public init(withTextFields textFields: [UITextField]) {
super.init()

guard textFields.count > 0 else { return }
textFields.forEach{ $0.delegate = self }

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}

这些是我的方法,可以简单地打印出用于首次亮相的文本:

@objc func keyboardWillShow(notification: NSNotification) {
print("aaaa")
}
@objc func keyboardWillHide(notification: NSNotification) {
print("bbbb")
}

和我的 UITextFieldDelegate:

    public func textFieldDidBeginEditing(_ textField: UITextField) {
print("111")
}

public func textFieldDidEndEditing(_ textField: UITextField) {
print("222")
}

public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print("333")
return true
}

在我的 View Controller 中,我有两个传递给我的类的文本字段。当我点击第一个时,我可以看到:

111
aaa

这就是我所期待的。当我按键盘上的回车键时出现问题,然后记录:

aaa
333

但它只在我第一次按下它时记录它,每隔一次它记录:333

当我按回车键时,键盘已经显示在屏幕上,为什么它会再次调用UIResponder.keyboardWillShowNotification?我的 textFieldShouldReturn 它是空的。

最佳答案

尝试在 textFieldShouldReturn 中调用 resignFirstResponder() 和/或 view.endEditing(true)

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}

还尝试将 UIResponder.keyboardWillHideNotification 更改为 UIResponder.keyboardDidHideNotification

关于ios - 当我按下返回键时,keyboardWillShowNotification 被触发(仅在我第一次按下它时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com