2017-08-08 12 views
15

पर मेरे पास निम्न कोड है जो आईओएस 10 पर काम करता है, लेकिन अब यह आईओएस 11 बीटा पर चलने पर अब और काम नहीं करता है।कीबोर्ड की ऊंचाई प्राप्त करें IOS 11 बीटा

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

किसी को भी जानता है क्यों यह काम करना बंद कर दिया है:

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

यह मैं क्या मिलता है जब मैं आकार मुद्रित है? या यदि मेरे पास कीबोर्ड आकार प्राप्त करने के लिए कोई अन्य विकल्प है?

+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

मैं एक ही मुद्दा है। डौग आमोस का उत्तर सही है। मैं बस इसे स्पष्ट करना चाहता हूं।

@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

यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17691520) – clemens

+0

कृपया, इसके बजाय डौग के उत्तर को संपादित करने पर विचार करें। – 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() 
संबंधित मुद्दे