Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios IQKeyboardManager可滚动整个屏幕,但只想滚动tableview内容_Ios_Swift_Iphone_Iqkeyboardmanager - Fatal编程技术网

Ios IQKeyboardManager可滚动整个屏幕,但只想滚动tableview内容

Ios IQKeyboardManager可滚动整个屏幕,但只想滚动tableview内容,ios,swift,iphone,iqkeyboardmanager,Ios,Swift,Iphone,Iqkeyboardmanager,在我的聊天应用程序中,textfielddebeginediting使用IQKeyboardManager自动添加键盘高度,但它会将整个屏幕滚动到顶部。我要求只滚动tableView的内容。我的navigationBar应保持连接到顶部,但使用第三方滚动库(IQKeyboardManager)将所有部分滚动到顶部。那么我如何才能只滚动表视图内容呢?在聊天视图控制器中,您可以禁用IQKeyboardManager 覆盖函数视图将出现(u动画:Bool){ 超级。视图将显示(动画) IQKeyboa

在我的聊天应用程序中,
textfielddebeginediting
使用
IQKeyboardManager
自动添加键盘高度,但它会将整个屏幕滚动到顶部。我要求只滚动tableView的内容。我的
navigationBar
应保持连接到顶部,但使用第三方滚动库(IQKeyboardManager)将所有部分滚动到顶部。那么我如何才能只滚动
表视图
内容呢?

聊天视图控制器
中,您可以禁用
IQKeyboardManager

覆盖函数视图将出现(u动画:Bool){
超级。视图将显示(动画)
IQKeyboardManager.shared().isEnabled=false
IQKeyboardManager.shared().isEnableAutoToolbar=false
}
当您准备像这样离开视图控制器时,可以重新启用它

覆盖函数视图将消失(u动画:Bool){
超级。视图将消失(动画)
IQKeyboardManager.shared().isEnabled=true
IQKeyboardManager.shared().isEnableAutoToolbar=true
}
现在我们禁用了
IQKeyboardManager
,我们必须自己管理键盘

要做到这一点,您可以尝试以下方法

override func viewDidLoad(){
super.viewDidLoad()
prepareTableView()
observeKeyboardEvents()
}
这里调用
viewDidLoad
方法中的
observeKeyboardEvents
方法

private func observeKeyboardEvents(){
NotificationCenter.default.addObserver(forName:UIResponder.keyboardWillShowNotification,对象:nil,队列:nil){[weak self](通知)在
guard let keyboardHeight=notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey]作为?cRect else{return}
打印(“键盘中的键盘高度将显示方法:\(keyboardHeight.height)”)
self?.tableView.contentInset.bottom=键盘高度.height+8
self?.tableView.scrollIndicationSets.bottom=键盘高度.height+8
}
NotificationCenter.default.addObserver(forName:UIResponder.keyboardWillHideNotification,对象:nil,队列:nil){[weak self](通知)位于
self?.tableView.scrollIndicationSets.bottom=0+8
self?.tableView.contentInset.bottom=0+8
}
}
observeKeyboardEvents
方法中,您注册此视图控制器以观察键盘
出现和
消失
通知,并相应地调整
表视图的
contentInset.bottom
。因此,我们还应该删除此视图控制器以停止接收键盘事件通知。为此,您可以尝试下面的代码

脱硝{
NotificationCenter.default.removeObserver(self,名称:UIResponder.keyboardWillHideNotification,对象:nil)
NotificationCenter.default.removeObserver(self,名称:UIResponder.keyboardWillShowNotification,对象:nil)
}

希望,这可能会对您有所帮助。:)

我也尝试过同样的方法,但现在我的文本字段没有向上移动,并且该用户无法检查键入的消息。