स्विफ्ट में userInfo से कीबोर्ड का आकार प्राप्त करना


82

जब कीबोर्ड दिखाई देता है तो मैं अपने दृश्य को स्थानांतरित करने के लिए कुछ कोड जोड़ने की कोशिश कर रहा हूं, हालांकि, मैं स्विफ्ट में ऑब्जेक्टिव-सी उदाहरणों का अनुवाद करने की कोशिश कर रहा हूं। मैंने कुछ प्रगति की है, लेकिन मैं एक विशेष रेखा पर अटका हुआ हूं।

ये दो ट्यूटोरियल / प्रश्न हैं जिनका मैं अनुसरण कर रहा हूं:

UIViewController की सामग्री को ऊपर की ओर कैसे ले जाना है क्योंकि कीपैड Swift http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears का उपयोग करके दिखाई देता है

वर्तमान में मेरे पास कोड है:

override func viewWillAppear(animated: Bool) {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}

override func viewWillDisappear(animated: Bool) {
    NSNotificationCenter.defaultCenter().removeObserver(self)
}

func keyboardWillShow(notification: NSNotification) {
    var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
    UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
    let frame = self.budgetEntryView.frame
    frame.origin.y = frame.origin.y - keyboardSize
    self.budgetEntryView.frame = frame
}

func keyboardWillHide(notification: NSNotification) {
    //
}

फिलहाल, मुझे इस लाइन पर एक त्रुटि मिल रही है:

var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))

अगर कोई मुझे बता सकता है कि कोड की यह रेखा क्या होनी चाहिए, तो मुझे बाकी का पता लगाने का प्रबंधन करना चाहिए।

जवाबों:


186

आपकी लाइन में कुछ समस्याएं हैं:

var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
  • notification.userInfoएक वैकल्पिक शब्दकोश देता है [NSObject : AnyObject]?, इसलिए इसे अपने मूल्यों तक पहुंचने से पहले अलिखित होना चाहिए।
  • ऑब्जेक्टिव-सी NSDictionaryएक स्विफ्ट देशी शब्दकोश में मैप किया गया है, इसलिए आपको dict[key]मूल्यों तक पहुंचने के लिए शब्दकोश सबस्क्रिप्ट सिंटैक्स ( ) का उपयोग करना होगा।
  • मान इस लिए डाला जाना चाहिए NSValueकि आप उस CGRectValueपर कॉल कर सकें।

यह सब वैकल्पिक असाइनमेंट, वैकल्पिक चेनिंग और वैकल्पिक कास्ट के संयोजन के साथ प्राप्त किया जा सकता है:

if let userInfo = notification.userInfo {
   if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
       // ...
   } else {
       // no UIKeyboardFrameBeginUserInfoKey entry in userInfo
   }
} else {
   // no userInfo dictionary in notification
}

या एक कदम में:

if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
    // ...
}

स्विफ्ट 3.0.1 (Xcode 8.1) के लिए अपडेट:

if let userInfo = notification.userInfo {
    if let keyboardSize = userInfo[UIKeyboardFrameBeginUserInfoKey] as? CGRect {
        let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
        // ...
    } else {
        // no UIKeyboardFrameBeginUserInfoKey entry in userInfo
    }
} else {
    // no userInfo dictionary in notification
}

या एक कदम में:

if let keyboardSize = notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? CGRect {
    let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
    // ...
}

स्विफ्ट 5 के लिए अपडेट (Xcode 11.6):

 guard let userInfo = notification.userInfo,
              let keyboardSize = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }

मैं keyboardFrameEndUserInfoKeyइसके बजाय उपयोग करने की सलाह देता हूं keyboardFrameBeginUserInfoKeyक्योंकि कीबोर्ड पुराने iOS उपकरणों पर पहले प्रदर्शन के बाद प्रारंभिक रेंडर ऊंचाई को बदलता है।


@MartinR मुझे खेद है कि मैंने गलत पोस्ट में टिप्पणी की है :) क्षमा करें
Lamour

नमस्ते, मैं कीबोर्ड आकार को सूचनाओं के साथ प्राप्त करने की कोशिश कर रहा हूं, लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है। मैं पर्यवेक्षक को देखने में जोड़ें मैंने इसे एक असली डिवाइस और सिम्युलेटर पर आजमाया। कोई सलाह? आपका बहुत बहुत धन्यवाद।
theMouse

"एक स्टेप" उत्तर में cgRectValue है, लेकिन CGRectValue होना चाहिए
व्लादिमीर

@krotov उत्तर का पहला भाग स्विफ्ट 2 के लिए है, स्विफ्ट 3 के लिए दूसरा भाग है। इन रिलीज के बीच उस संपत्ति का नाम बदल दिया गया था।
मार्टिन आर।

1
मुझे लगता है कि इस मामले के लिए UIKeyboardFrameBeginUserInfoKey के बजाय UIKeyboardFrameEndUserInfoKey का उपयोग करना बेहतर है जब कीबोर्ड फ़्रेम में परिवर्तन होता है (iOS 9 या बाद के संस्करण के लिए इमोजी कीबोर्ड पर स्विच करने में सक्षम होना चाहिए)
crcalin

18

इससे भी कम कोड के लिए इस पर विचार करें

यह वास्तव में मेरे लिए मददगार था। आपको बस व्यू कंट्रोलर को व्यू कंट्रोलर में शामिल करना होगा और आपके द्वारा जोड़े गए दो ऑब्जर्वर का उपयोग करना होगा। तो बस निम्नलिखित विधियों का उपयोग करें (यह माना जाता है कि आप यहां एक तालिका देखें)

func keyboardWillShow(sender: NSNotification) {
        if let userInfo = sender.userInfo {
            if let keyboardHeight = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue().size.height {
                tableViewBottomConstraint.constant = keyboardHeight
                UIView.animateWithDuration(0.25, animations: { () -> Void in
                    self.view.layoutIfNeeded()
                })
            }
        }
    }

तथा

func keyboardWillHide(sender: NSNotification) {
if let userInfo = sender.userInfo {
  if let keyboardHeight = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue().size.height {
    tableViewBottomConstraint.constant = 0.0
    UIView.animateWithDuration(0.25, animations: { () -> Void in self.view.layoutIfNeeded() })
  }
} }

1
मुझे यह उत्तर तब तक नहीं मिला जब तक मैंने इसे कहीं और नहीं देखा, जहाँ यह मेरे लिए स्पष्ट हो गया कि tableViewBottomConstraint Xib का एक आउटलेट है। तब यह स्पष्ट हो गया कि यह सही उत्तर है! (यदि आप ऑटो-लेआउट का उपयोग कर रहे हैं)
जॉरिस वैन लीम्पड iDeveloper

@JorisvanLiempd हां, मैं ऑटो लेआउट का उपयोग कर रहा हूं। अच्छा हुआ इससे आपको मदद मिली।
निकोलस

ऐसा लगता है कि एनीमेशन बिना एनीमेशन ब्लॉक के मुफ्त आता है। इस उत्तर में वैसे भी कीबोर्ड वक्र और अवधि का पालन नहीं किया गया है।
अमितप

11

यदि आप स्टोरीबोर्ड का उपयोग कर रहे हैं, तो दृश्य को हेरफेर करने के बजाय, आप ऑटो-लेआउट का लाभ उठा सकते हैं।

(यह निकोलस के उत्तर का एक साफ किया गया संस्करण है)

कीबोर्ड की उपस्थिति और गायब होने की सूचना देने के लिए सूचना केंद्र स्थापित करें:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)

}

और सुनिश्चित करें कि आप पर्यवेक्षकों को हटा दें जब आपको उनकी आवश्यकता नहीं है:

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: self.view.window)
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: self.view.window)
}

स्टोरीबोर्ड के अंदर, नीचे की बाधा निर्धारित करें। उस बाधा का एक आउटलेट बनाएँ:

यहाँ छवि विवरण दर्ज करें

और कीबोर्ड दिखाए जाने या छिपे होने पर बाधा की स्थिर संपत्ति सेट करें:

func keyboardWillShow(notification: NSNotification) {
    guard let keyboardHeight = (notification.userInfo! as NSDictionary).objectForKey(UIKeyboardFrameBeginUserInfoKey)?.CGRectValue.size.height else {
        return
    }
    nameOfOutlet.constant = keyboardHeight
    view.layoutIfNeeded()
}

func keyboardWillHide(notification: NSNotification) {
    nameOfOutlet.constant = 0.0
    view.layoutIfNeeded()
}

अब, जब भी कीबोर्ड दिखाई देता है या गायब हो जाता है, तो ऑटोलेयूट सब कुछ ध्यान रखेगा।


4

स्विफ्ट 2

func keyboardWasShown(notification:NSNotification) {
        guard let info:[NSObject:AnyObject] = notification.userInfo,
            let keyboardSize:CGSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue().size else { return }

        let insets:UIEdgeInsets = UIEdgeInsetsMake(self.scrollView.contentInset.top, 0.0, keyboardSize.height, 0.0)

        self.scrollView.contentInset = insets
        self.scrollView.scrollIndicatorInsets = insets
    }

स्विफ्ट 3

func keyboardWasShown(notification:NSNotification) {
    guard let info:[AnyHashable:Any] = notification.userInfo,
        let keyboardSize:CGSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size else { return }

    let insets:UIEdgeInsets = UIEdgeInsets(top: self.scrollView.contentInset.top, left: 0.0, bottom: keyboardSize.height, right: 0.0)

    self.scrollView.contentInset = insets
    self.scrollView.scrollIndicatorInsets = insets
}

धन्यवाद, यह मेरी बहुत मदद करता है!
javimuu

3

इससे मुझे मदद मिली: https://developer.apple.com/library/ios/samplecode/UICatalog/Listings/Swift_UICatalog_TextViewController_swift.html

let userInfo = notification.userInfo!

let animationDuration: NSTimeInterval = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as NSNumber).doubleValue
let keyboardScreenBeginFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue()
let keyboardScreenEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()

1

आप अपनी लाइन के लिए इस एक लाइन का उपयोग कर सकते हैं

var keyboardSize:CGSize = userInfo.objectForKey(UIKeyboardFrameBeginUserInfoKey)!.CGRectValue().size

3
उस शब्दकोश से कीबोर्ड के फ्रेम को खोलना मजबूर करना सुरक्षित नहीं है। वहां नहीं हो सका।
अद्म

1

स्विफ्ट 3: अद्यतन

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: self.view.window)
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: self.view.window)
}

1

स्विफ्ट - कीबोर्ड से कीबोर्ड की ऊँचाईWillShowNotification

आप कीबोर्ड से डेटा का उपयोग करते हुए कीबोर्ड के आकार में एक बाधा, या किसी अन्य मूल्य को बढ़ा या छोटा कर सकते हैं, सूचनाओं को दिखा / छिपा सकते हैं।

एक लेआउट बाधा के साथ

यह न्यूनतम कोड अधिसूचना के लिए पंजीकृत करता है कि कीबोर्ड अपने आकार के आधार पर एक बाधा को दिखाएगा और अपडेट करेगा।

@IBOutlet weak var keyboardConstraint: NSLayoutConstraint!
let keyboardConstraintMargin:CGFloat = 20

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: nil) { (notification) in
        if let keyboardSize = notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? CGRect {
            self.keyboardConstraint.constant = keyboardSize.height + self.keyboardConstraintMargin
        }
    }
    NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: nil) { (notification) in
        self.keyboardConstraint.constant = self.keyboardConstraintMargin
    }
}

एक स्क्रॉल दृश्य के साथ

उसी तरह से यह कीबोर्ड के आकार के आधार पर स्क्रॉल दृश्य की सामग्री इनसेट को अपडेट करता है।

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
  super.viewDidLoad()
  NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: nil) { (notification) in
    if let keyboardSize = notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? CGRect {
      let insets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
      self.scrollView.contentInset = insets
      self.scrollView.scrollIndicatorInsets = insets
    }
  }
  NotificationCenter.default.addObserver(forName: UIResponder.keyboardDidHideNotification, object: nil, queue: nil) { (notification) in
    let insets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    self.scrollView.contentInset = insets
    self.scrollView.scrollIndicatorInsets = insets
  }
}

1

विवरण

  • Xcode संस्करण 11.1 (11A1027), iOS 13, स्विफ्ट 5

उपाय

import UIKit

protocol KeyboardNotificationsDelegate: class {
    func keyboardWillShow(notification: NSNotification)
    func keyboardWillHide(notification: NSNotification)
    func keyboardDidShow(notification: NSNotification)
    func keyboardDidHide(notification: NSNotification)
}

extension KeyboardNotificationsDelegate {
    func keyboardWillShow(notification: NSNotification) {}
    func keyboardWillHide(notification: NSNotification) {}
    func keyboardDidShow(notification: NSNotification) {}
    func keyboardDidHide(notification: NSNotification) {}
}

class KeyboardNotifications {

    fileprivate var _isEnabled: Bool
    fileprivate var notifications: [KeyboardNotificationsType]
    fileprivate weak var delegate: KeyboardNotificationsDelegate?

    init(notifications: [KeyboardNotificationsType], delegate: KeyboardNotificationsDelegate) {
        _isEnabled = false
        self.notifications = notifications
        self.delegate = delegate
    }

    deinit { if isEnabled { isEnabled = false } }
}

// MARK: - enums

extension KeyboardNotifications {

    enum KeyboardNotificationsType {
        case willShow, willHide, didShow, didHide

        var selector: Selector {
            switch self {
                case .willShow: return #selector(keyboardWillShow(notification:))
                case .willHide: return #selector(keyboardWillHide(notification:))
                case .didShow: return #selector(keyboardDidShow(notification:))
                case .didHide: return #selector(keyboardDidHide(notification:))
            }
        }

        var notificationName: NSNotification.Name {
            switch self {
                case .willShow: return UIResponder.keyboardWillShowNotification
                case .willHide: return UIResponder.keyboardWillHideNotification
                case .didShow: return UIResponder.keyboardDidShowNotification
                case .didHide: return UIResponder.keyboardDidHideNotification
            }
        }
    }
}

// MARK: - isEnabled

extension KeyboardNotifications {

    private func addObserver(type: KeyboardNotificationsType) {
        NotificationCenter.default.addObserver(self, selector: type.selector, name: type.notificationName, object: nil)
    }

    var isEnabled: Bool {
        set {
            if newValue {
                for notificaton in notifications { addObserver(type: notificaton) }
            } else {
                NotificationCenter.default.removeObserver(self)
            }
            _isEnabled = newValue
        }

        get { return _isEnabled }
    }

}

// MARK: - Notification functions

extension KeyboardNotifications {

    @objc func keyboardWillShow(notification: NSNotification) {
        delegate?.keyboardWillShow(notification: notification)
    }

    @objc func keyboardWillHide(notification: NSNotification) {
        delegate?.keyboardWillHide(notification: notification)
    }

    @objc func keyboardDidShow(notification: NSNotification) {
        delegate?.keyboardDidShow(notification: notification)
    }

    @objc func keyboardDidHide(notification: NSNotification) {
        delegate?.keyboardDidHide(notification: notification)
    }
}

प्रयोग

class ViewController: UIViewController {

    private lazy var keyboardNotifications: KeyboardNotifications! = {
        return KeyboardNotifications(notifications: [.willShow, .willHide, .didShow, .didHide], delegate: self)
    }()

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        keyboardNotifications.isEnabled = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        keyboardNotifications.isEnabled = false
    }
}

extension ViewController: KeyboardNotificationsDelegate {

    // If you don't need this func you can remove it
    func keyboardWillShow(notification: NSNotification) {
        print("keyboardWillShow")
        guard   let userInfo = notification.userInfo as? [String: NSObject],
                let keyboardFrame = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }
        print("keyboardFrame: \(keyboardFrame)")
    }

    // If you don't need this func you can remove it
    func keyboardWillHide(notification: NSNotification) { print("keyboardWillHide") }

    // If you don't need this func you can remove it
    func keyboardDidShow(notification: NSNotification) { print("keyboardDidShow") }

    // If you don't need this func you can remove it
    func keyboardDidHide(notification: NSNotification) { print("keyboardDidHide") }
}

पूरा नमूना

import UIKit

class ViewController: UIViewController {

    private lazy var keyboardNotifications: KeyboardNotifications! = {
        return KeyboardNotifications(notifications: [.willShow, .willHide, .didShow, .didHide], delegate: self)
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        let textField = UITextField(frame: CGRect(x: 40, y: 40, width: 200, height: 30))
        textField.borderStyle = .roundedRect
        view.addSubview(textField)

        let gesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing(_:)))
        view.addGestureRecognizer(gesture)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        keyboardNotifications.isEnabled = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        keyboardNotifications.isEnabled = false
    }
}

 extension ViewController: KeyboardNotificationsDelegate {

    // If you don't need this func you can remove it
    func keyboardWillShow(notification: NSNotification) {
        print("keyboardWillShow")
        guard   let userInfo = notification.userInfo as? [String: NSObject],
                let keyboardFrame = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }
        print("keyboardFrame: \(keyboardFrame)")
    }

    // If you don't need this func you can remove it
    func keyboardWillHide(notification: NSNotification) { print("keyboardWillHide") }

    // If you don't need this func you can remove it
    func keyboardDidShow(notification: NSNotification) { print("keyboardDidShow") }

    // If you don't need this func you can remove it
    func keyboardDidHide(notification: NSNotification) { print("keyboardDidHide") }
}

परिणाम

यहाँ छवि विवरण दर्ज करें

लॉग

यहाँ छवि विवरण दर्ज करें


0

स्विफ्ट 3.0

यहां कीबोर्ड के आकार को फिर से प्राप्त करने और ऊपर की ओर देखने के लिए इसका उपयोग करने का एक उदाहरण है। मेरे मामले में, मैं एक UIView को अपने UITextFields युक्त ऊपर की ओर ले जा रहा हूं जब कोई उपयोगकर्ता टाइप करना शुरू करता है तो वे एक फ़ॉर्म को पूरा कर सकते हैं और फिर भी सबसे नीचे सबमिट बटन देख सकते हैं।

मैंने उस दृश्य के निचले स्थान की बाधा के लिए एक आउटलेट जोड़ा , जिसे मैं चेतन करना चाहता था और उसका नाम रखा myViewsBottomSpaceConstraint:

@IBOutlet weak var myViewsBottomSpaceConstraint: NSLayoutConstraint!

मैंने तब अपनी स्विफ्ट क्लास में निम्न कोड जोड़ा:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: self.view.window)
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: self.view.window)
}

func keyboardWillShow(notification: NSNotification) {

    let userInfo = notification.userInfo as! [String: NSObject] as NSDictionary
    let keyboardFrame = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as! CGRect
    let keyboardHeight = keyboardFrame.height
    myViewsBottomSpaceConstraint.constant = keyboardHeight
    view.layoutIfNeeded()
}

func keyboardWillHide(notification: NSNotification) {
    myViewsBottomSpaceConstraint.constant = 0.0
    view.layoutIfNeeded()
}

0

Xamarin के लिए, आप c # 6 का उपयोग कर सकते हैं

private void KeyboardWillChangeFrame(NSNotification notification)
{
        var keyboardSize = notification.UserInfo.ValueForKey(UIKeyboard.FrameEndUserInfoKey) as NSValue;
        if (keyboardSize != null)
        {
            var rect= keyboardSize.CGRectValue;
            //do your stuff here
        }
}

सी # 7

  private void KeyboardWillChangeFrame(NSNotification notification)
   {
       if (!(notification.UserInfo.ValueForKey(UIKeyboard.FrameEndUserInfoKey) is NSValue keyboardSize)) return;
       var rect= keyboardSize.CGRectValue;
   }

0

में स्विफ्ट 4.2 आप UIResponder.keyboardFrameEndUserInfoKey उपयोग कर सकते हैं

guard let userInfo = notification.userInfo , let keyboardFrame:CGRect = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect  else { return  }```
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.