2017-09-20 11 views
5

मैंने अभी देखा है कि मेरा कीबोर्ड ऊंचाई पहचान कोड अब आईओएस 11 के साथ काम नहीं कर रहा है।तेज़ आईओएस 11 - कीबोर्ड की पहचान करें आकार की ऊंचाई अब काम नहीं करती है

आईओएस 10 उपकरणों के लिए मैंने इस तर्क का पता लगाने के लिए उपयोग किया, यदि कोई कीबोर्ड एक विशिष्ट इनपुट फ़ील्ड छुपाएगा (मेरे मामले में एक टेक्स्ट फ़ील्ड)। यदि ऐसा है, तो उपयोगकर्ता को इनपुट इनपुट को सही ढंग से सक्षम करने के लिए कीबोर्ड को अंतिम सक्रिय टेक्स्टफील्ड के तहत प्रदर्शित किया जाएगा।

आईओएस 11 के मामले में कीबोर्ड ऊंचाई की पहचान काम नहीं करती है। कुंजीपटल willAppear तर्क यहाँ के लिए

सहायक वर्ग उदाहरण सिर्फ एक उदाहरण क्या keyBoardWillShow करता है -> यह सिर्फ चेक, अगर देखने के लिए, कीबोर्ड के ऊपर स्थानांतरित किया जा सकता है अगर कुंजीपटल पाठ फ़ील्ड को छिपाने के लिए जा रहा है की जरूरत है।

मैं कुछ debuggin किया था और पता चला कि कोड की रेखा से नीचे आईओएस 10 और iOS 11 के बीच अलग तरह से काम करता है:

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

iOS10 डिबगर उत्पादन

keyboardSize CGRect (मूल = (x = 0, y = 568), आकार = (चौड़ाई = 320, ऊंचाई = 216))

iOS11 डिबगर उत्पादन

keyboardSize CGRect (मूल = (x = 0, y = 568), आकार = (चौड़ाई = 320, ऊंचाई = 0))

नीचे आप पूर्ण कोड देख सकते हैं - यह आईओएस जब तक काम किया 10,3

func keyboardWillShow(notification: NSNotification, view: UIView, activeTextField: UITextField?, scrollView: UIScrollView?) { 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     if view.frame.origin.y == 0{ 
      var aRect : CGRect = (view.viewWithTag(2)?.frame)! 
      aRect.size.height -= keyboardSize.height 
      if let activeField = activeTextField { 
       let tempPoint = CGPoint(x: activeField.frame.origin.x, y: activeField.frame.origin.y + 20) 
       if (aRect.size.height < tempPoint.y){ 
        view.frame.origin.y -= keyboardSize.height 
        if let scrollView = scrollView { 
         let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.size.height) 
         scrollView.setContentOffset(bottomOffset, animated: true) 
        } 
       } 
      } 
     } 
    } 
} 

अद्यतन 2017/09/20

मैं अब कई बार कोशिश की। कभी कभी यह यह मुझे भी पता चलता है iOS11 के लिए एक कीबोर्ड ऊंचाई मूल्य - अब मैं पूरी तरह से भ्रमित कर रहा हूँ .....

उत्तर

10

उपयोग UIKeyboardFrameEndUserInfoKey बजाय UIKeyboardFrameBeginUserInfoKey

संबंधित मुद्दे