gpt4 book ai didi

swift - 找出 UIKeyboard.frame 何时与其他框架相交?

转载 作者:行者123 更新时间:2023-11-30 12:40:56 25 4
gpt4 key购买 nike

我需要找出文本字段何时成为第一响应者,以通知我将要显示的键盘是否会遮挡 UITextField。如果是这样,我想调整 ScrollView 属性。

到目前为止我已经有了这个设置。我正在监听调用以下选择器的 UIKeyboardWillShow 通知:

func keyboardWillAppear(notification:NSNotification)
{
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
{

if keyboardSize.intersects(textField.frame)
{
print("It intersects")
}
else
{
print("Houston, we have a problem")
}
}

注意:我尝试使用 UIKeyboardDidShow 但仍然没有成功。 UITextField 是scrollView 的 subview 。

最佳答案

  1. 监听键盘大小变化
  2. 转换坐标

工作示例:

 @IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()

//keyboard observers
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}

func keyboardWillChange(notification:NSNotification)
{
print("Keyboard size changed")

if let keyboardSize = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? CGRect {
//convert gotten rect
let r = self.view.convert(keyboardSize, from: nil)

//test it
if r.intersects(textView.frame) {
print("intersects!!!")
}
}
}

关于swift - 找出 UIKeyboard.frame 何时与其他框架相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com