iOS 11 inputAccessoryView 坏了
Posted
技术标签:
【中文标题】iOS 11 inputAccessoryView 坏了【英文标题】:iOS 11 inputAccessoryView broken 【发布时间】:2017-09-22 18:51:52 【问题描述】:我在视图控制器上为我的 UIToolBar / Accessory View 进行了以下设置
@IBOutlet var inputFieldView: UIToolbar!
override var canBecomeFirstResponder: Bool
return true
override var inputAccessoryView: UIView?
return self.inputFieldView
然后在我的 viewDidLoad 里面我有:
let seperator = UIView(frame: CGRect(x:0 , y: 0, width: ScreenSize.width(), height: 1))
seperator.backgroundColor = UIColor.lightBackground
self.inputFieldView.addSubview(seperator)
self.inputFieldView.isTranslucent = false
self.inputFieldView.setShadowImage(UIImage(), forToolbarPosition: .any)
self.inputFieldView.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
self.inputFieldView.removeFromSuperview()
这对于 ios 版本 10 和 9 非常有效。它是一个带有“发送”按钮的文本视图。它位于屏幕底部,按下时会成为第一响应者,允许键盘出现并正确定位。
使用 ios 11,当它位于底部时,我什至无法点击它,所以我根本无法输入。
【问题讨论】:
【参考方案1】:这是 iOS 11 上的一个已知错误。UIToolbar 子视图无法获取触摸事件,因为工具栏的某些内部视图设置不正确。
当前的解决方法是在添加子视图之前调用 toolBar.layoutIfNeeded()。
在你的情况下:
inputFieldView.layoutIfNeeded()
希望这将在下一个主要版本中得到解决。
【讨论】:
@ahbou 你知道是否有为此申请的雷达吗?如果可能的话,我想跟踪它【参考方案2】:解决了。看起来 UIToolbar 在 iOS 11 中无法正常工作。
将其更改为 UIView 并删除
self.inputFieldView.isTranslucent = false
self.inputFieldView.setShadowImage(UIImage(), forToolbarPosition: .any)
self.inputFieldView.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
让它工作(并从 xib 中的 UIToolbar 将其更改为 UIView。)
【讨论】:
你能显示你的完整代码吗?我正在努力让它出现。 您是想重现我的问题,还是解决您自己的问题? @arvidurs以上是关于iOS 11 inputAccessoryView 坏了的主要内容,如果未能解决你的问题,请参考以下文章
从 inputAccessoryView 到 tableView 的动画文本,如 iOS 11 消息应用程序
ObjC iOS11:在 inputAccessoryView 中成为第一响应者时,TextField 不显示
inputAccessoryView 类似 iOS Mail