iOS 11 键盘和附件视图之间的额外空间
Posted
技术标签:
【中文标题】iOS 11 键盘和附件视图之间的额外空间【英文标题】:iOS 11 extra space between keyboard and accessoryView 【发布时间】:2018-05-06 20:27:39 【问题描述】:inputAccessoryView
和键盘有一些奇怪的 UI 错误。
在viewDidLoad
中添加inputAccessoryView
的代码
let keyboardToolbar = UIToolbar()
keyboardToolbar.items = [
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Hide", style: .done, target: self, action: #selector(resignFirstResponder))
]
keyboardToolbar.barStyle = barStyle
keyboardToolbar.sizeToFit()
myTextfield.inputAccessoryView = keyboardToolbar
第一次进入屏幕并点击文本字段效果很好。 关闭此屏幕(popViewController)并再次输入并获得对 textField 的关注后,我得到了这个: UIToolBar 位于键盘上方。空白处有高度 = 键盘高度
用户界面错误图片
【问题讨论】:
尝试为你的UIToolBar
指定框架:let keyboardToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 40))
没有帮助。还尝试用自定义 UIView 替换 UIToolBar - 同样的错误
这个功能你自己实现了吗[resignFirstResponder]?
【参考方案1】:
这是因为 ios 11 中有安全区域,而这个空间出现在 iphone X 上
检查此帖子可能重复
iPhone X how to handle View Controller inputAccessoryView?
【讨论】:
在我的情况下出现了一些不同的问题,因为第一次出现的键盘看起来都很好。在一个错误导致工具栏的按钮“隐藏”位于那里之后,它应该是这样的,所以我可以点击键盘上方的空白区域并隐藏调用。看起来只是 UI 渲染问题 什么代码?我试过 layoutIfNeeded() 和 setNeedsDisplay()。没用 您在 Viewdidload 中添加此代码的位置,以前的代码与我一起使用没有任何错误 我有很多元素,屏幕生命周期中的动画很少,textField 上的响应式(rxswift)。所以我猜这不是一个常见的错误。 可以单独尝试,确保不受约束【参考方案2】:我不知道原因,但解决方法是调用任何一个
view.endEditing
或
textField.resignFirstResponder()
在
viewWillDisappear
【讨论】:
以上是关于iOS 11 键盘和附件视图之间的额外空间的主要内容,如果未能解决你的问题,请参考以下文章
layoutAnimation 在两个视图之间切换时会在 Android 上导致额外的蓝色背景