gpt4 book ai didi

ios - Xcode 9 中的 UIKeyboard Notification.userInfo 关键错误

转载 作者:行者123 更新时间:2023-11-28 08:00:44 25 4
gpt4 key购买 nike

  @objc func keyboardWasShown(_ notification:NSNotification)  {

var userinfo = notification.userInfo!

let kbSize:NSValue = userinfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue

let kbRectSize = kbSize.cgRectValue

let edgeInsects = UIEdgeInsetsMake(0, 0,kbRectSize.height + 10, 0)

self.scrollView.contentInset = edgeInsects
self.scrollView.scrollIndicatorInsets = edgeInsects



// active text field

var aRect:CGRect = self.view.frame
aRect.size.height -= kbRectSize.height


if(!aRect.contains(activeField.frame.origin)){
scrollView.isScrollEnabled = true
scrollView.scrollRectToVisible(activeField.frame, animated: true)
aRect = CGRect.zero
}
}

ScrollView 将按预期第一次滚动,然后变得无响应。代码在 Xcode 8.3 之前运行良好,没有任何问题。

请确认这是否是错误以及如何规避它。提前致谢。

最佳答案

我也遇到了同样的问题,通过做一些改变,它工作正常。在您的场景中尝试下面的代码,看看它是否有效:

@objc func keyboardWasShown(_ notification:NSNotification)  {

var keyboardHeight: CGFloat = 260

var userinfo = notification.userInfo!

let keyboardSize = (userinfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size

if keyboardSize!.height > 10.0{
keyboardHeight = keyboardSize!.height
}

let edgeInsects = UIEdgeInsetsMake(0, 0, keyboardHeight + 10, 0)

self.scrollView.contentInset = edgeInsects
self.scrollView.scrollIndicatorInsets = edgeInsects

// active text field

var aRect:CGRect = self.view.frame
aRect.size.height -= kbRectSize.height

if(!aRect.contains(activeField.frame.origin)){
scrollView.isScrollEnabled = true
scrollView.scrollRectToVisible(activeField.frame, animated: true)
aRect = CGRect.zero
}
}

我在我的项目中使用了以下代码来注册屏幕,它工作得很好:

func keyboardWasShown(notification: NSNotification){
//Need to calculate keyboard exact size due to Apple suggestions
var keyboardHeight: CGFloat = 260

self.scrollView.isScrollEnabled = true

var info = notification.userInfo!
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
if keyboardSize!.height > 10.0{
keyboardHeight = keyboardSize!.height
}

let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardHeight, 0.0)

self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets

var aRect : CGRect = self.view.frame
aRect.size.height -= keyboardHeight

if let activeField = self.activeField {
if (!aRect.contains(activeField.frame.origin)){
self.scrollView.scrollRectToVisible(activeField.frame, animated: true)
}
}
}

func keyboardWillBeHidden(notification: NSNotification){
//Once keyboard disappears, restore original positions

self.scrollView.contentInset = UIEdgeInsets.zero
self.scrollView.scrollIndicatorInsets = UIEdgeInsets.zero
self.scrollView.isScrollEnabled = false

}

只需根据您的要求尝试和调试更多更改即可。希望它有效。

关于ios - Xcode 9 中的 UIKeyboard Notification.userInfo 关键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751348/

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