我使用Apple的默认键盘和第三方键盘在iOS8中运行以下代码:
class ViewController: UIViewController {
var checkValue: CGRect?
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateViews:", name: UIKeyboardWillShowNotification, object: nil)
}
func updateViews(notification: NSNotification){
if let userInfo = notification.userInfo {
let endKeyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey]!).CGRectValue()
checkValue = endKeyboardFrame
}
println(checkValue)
}
}
例如,这是SwiftKeys的输出:
(0.0, 667.0, 375.0, 0.0)
(0.0, 451.0, 375.0, 216.0)
(0.0, 409.0, 375.0, 258.0)
而Apple的默认键盘:
Optional((0.0, 409.0, 375.0, 258.0))
对于Apple的默认键盘,代码会按预期调用一次[例如点击文本字段]。但是对于第三方键盘,它会被多次调用。为什么是这样?我不想禁用第三方键盘。
在我的主项目中,我正在更新视图,这导致代码多次运行。