Swift 中从 userInfo 获取键盘大小

作者:编程家 分类: swift 时间:2025-07-19

在Swift中,我们经常需要获取键盘的大小信息,以便在界面布局中做出相应的调整。幸运的是,Swift为我们提供了一个方便的方法来从userInfo中获取键盘的大小。下面我们将详细介绍如何实现这个功能,并提供一个简单的案例代码。

首先,我们需要在我们的代码中监听键盘的显示和隐藏事件。为了做到这一点,我们可以使用NotificationCenter来观察相关的通知。具体来说,我们可以监听UIResponder.keyboardWillShowNotification 和 UIResponder.keyboardWillHideNotification这两个通知。

当键盘将要显示时,系统会发送UIResponder.keyboardWillShowNotification通知,我们可以在通知的userInfo中获取键盘的相关信息,其中包括键盘的大小。同样地,当键盘将要隐藏时,系统会发送UIResponder.keyboardWillHideNotification通知,我们也可以从通知的userInfo中获取键盘的大小。

接下来,我们可以使用以下代码来实现获取键盘大小的功能:

swift

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)

}

@objc func keyboardWillShow(_ notification: Notification) {

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

// 在这里可以获取到键盘的大小,进行相应的布局调整

print("键盘将要显示,大小为:\(keyboardSize)")

}

}

@objc func keyboardWillHide(_ notification: Notification) {

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

// 在这里可以获取到键盘的大小,进行相应的布局调整

print("键盘将要隐藏,大小为:\(keyboardSize)")

}

}

}

获取键盘大小的方法

在上述代码中,我们创建了一个ViewController,并在其中添加了两个观察者,分别用于监听键盘将要显示和将要隐藏的事件。在相应的事件处理方法中,我们通过从通知的userInfo中获取键盘的大小信息,可以对键盘的显示和隐藏进行相应的布局调整。

在这个简单的示例中,我们只是简单地打印了键盘的大小信息,但在实际应用中,您可以根据需要进行相应的布局调整,以确保界面在键盘的显示和隐藏时能够正常显示。

在本文中,我们介绍了如何在Swift中从userInfo中获取键盘的大小信息。通过使用NotificationCenter来观察键盘的显示和隐藏事件,并在相应的事件处理方法中获取键盘的大小,我们可以实现对键盘的布局调整。这个功能在开发中非常有用,可以帮助我们更好地适应不同尺寸的键盘,提升用户体验。

希望本文对您有所帮助,如果您有任何问题或建议,请随时留言。谢谢阅读!