2017-08-08 70 views
15

我有以下代碼工作在IOS 10,但現在它不再工作時,在IOS 11測試版上運行。獲取鍵盤的高度不工作在IOS 11測試版

if let userInfo = notification.userInfo { 
    if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     print(keyboardSize) 
    } 
} 

這是我所得到的,當我打印尺寸:

(0.0, 0.0, 0.0, 0.0) 
(0.0, 736.0, 414.0, 0.0) 

任何人都知道爲什麼這已停止工作?或者,如果我有其他的選擇來獲得鍵盤大小?

+1

同樣的問題https://stackoverflow.com/questions/45569276/密碼自動填充,quicktype吧 - 在-IOS-11? –

+0

@MartinR:是的,同樣的問題在這裏,以相同的修復答案:) – Kobe

回答

15

使用UIKeyboardFrameEndUserInfoKey而不是UIKeyboardFrameBeginUserInfoKey

因此改變你的代碼,下面將解決您的問題:

if let userInfo = notification.userInfo { 
    if let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { 
     print(keyboardSize) 
    } 
} 
+0

這是正確的答案,並應標記爲這樣 – aug2uag

3

我有同樣的問題。 Doug Amos的答案是正確的。我只想說清楚一點。 這裏是我的代碼:

@objc func keyboardWillShow(notification:NSNotification){ 

     var userInfo = notification.userInfo! 
     var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue 
     if keyboardFrame.size.height <= 0 { // to fix bug on iOS 11 
      keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 
     } 
     keyboardFrame = self.view.convert(keyboardFrame, from: nil) 
    } 
+0

這不是一個答案,應該是一個評論。它不會添加任何附加信息 – Vega

+0

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/17691520) – clemens

+0

請考慮編輯Doug的回答。 – ivaigult

-1
func keyboardWillShow(_ notification: Foundation.Notification) { 

    if let keyboardSize = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? CGRect { 

     print(keyboardSize) 

    } 

} 
0

我用這個代碼在我的應用程序SWIF 3+

var userInfo = notification.userInfo 
    if let keyboardFrame = (userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{ 
     print(keyboardFrame.height) 
     if keyboardFrame.size.height <= 0 { // To fix bug on iOS 11 
      if let newKeyboardFrame = (userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue{ 
       print(newKeyboardFrame.height) 
      } 
     } 
    } 
    view.layoutIfNeeded() 
相關問題