查看键盘显示和隐藏的响应度 Ios Swift 4
View Responsiveness on Keyboard Show and Hide Ios Swift 4
这是我的看法。
当我在文本视图中单击时,键盘出现在顶部。所以我添加了一个 class 并在那个 class 中添加了这些函数。
var objectObserver:UIViewController?
func setKeyboardResponsiviness(observer:UIViewController){
objectObserver = observer
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if objectObserver!.view.frame.origin.y == 0 {
objectObserver!.view.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if objectObserver!.view.frame.origin.y != 0 {
objectObserver!.view.frame.origin.y = 0
}
}
添加代码后,整个屏幕向上滑动,这是预期的目标,但作为副作用,文本视图的一半超出了屏幕。知道我该如何解决这个问题吗?
简单的解决方案是使用 IQKeyboardManagerSwift。
pod 'IQKeyboardManagerSwift' // add this in your pod file.
在 didFinishLaunchingWithOptions 中添加如下代码。
IQKeyboardManager.shared.enable = true
希望对您有所帮助。
这是我的看法。
当我在文本视图中单击时,键盘出现在顶部。所以我添加了一个 class 并在那个 class 中添加了这些函数。
var objectObserver:UIViewController?
func setKeyboardResponsiviness(observer:UIViewController){
objectObserver = observer
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if objectObserver!.view.frame.origin.y == 0 {
objectObserver!.view.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if objectObserver!.view.frame.origin.y != 0 {
objectObserver!.view.frame.origin.y = 0
}
}
添加代码后,整个屏幕向上滑动,这是预期的目标,但作为副作用,文本视图的一半超出了屏幕。知道我该如何解决这个问题吗?
简单的解决方案是使用 IQKeyboardManagerSwift。
pod 'IQKeyboardManagerSwift' // add this in your pod file.
在 didFinishLaunchingWithOptions 中添加如下代码。
IQKeyboardManager.shared.enable = true
希望对您有所帮助。