小编cjm*_*nie的帖子

在iOS 11上没有调用UIKeyboardWillChangeFrame(转换视图控制器时)

问题

我在iOS 11上有很多案例(在iOS 10及以下版本中没有出现),其中.UIKeyboardWillChangeFrame没有触发通知 - 特别是在两个视图控制器都有一个UITextfield设置为fristResponder的视图控制器之间转换时.

由于我的UI需要在响应键盘显示的键盘上方进行动画处理,因此接收此通知至关重要.

在iOS 10及更低版本中,我在两个视图控制器上都会收到通知(显示VC A时以及推送VC B时).但是,在iOS 11上,按下VC B时通知不会触发.就像键盘保持原位一样.

有谁知道这是什么原因?


细节

两个视图控制器都从基本视图控制器继承,具有以下实现:

class BaseViewController {
override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChangeFrame), name: .UIKeyboardWillChangeFrame, object: nil)

}

// Update layout when the keyboard is shown or hidden
@objc func keyboardWillChangeFrame(notification : Notification) {

    // Check if got info
    if (notification.userInfo == nil) {
        return;
    }

    // Get resize properties
    let dict = notification.userInfo!
    let rect = self.view.convert((((dict[UIKeyboardFrameEndUserInfoKey as NSObject] as Any) as AnyObject).cgRectValue)!, …
Run Code Online (Sandbox Code Playgroud)

uikeyboard ios swift

6
推荐指数
1
解决办法
1079
查看次数

标签 统计

ios ×1

swift ×1

uikeyboard ×1