iOS 11的inputAccessoryView坏了

dar*_*234 0 inputaccessoryview swift3 ios11

我在视图控制器上为我的UIToolBar/Accessory View设置了以下设置

@IBOutlet var inputFieldView: UIToolbar!
override var canBecomeFirstResponder: Bool{
    return true
}

override var inputAccessoryView: UIView?{
    return self.inputFieldView
}
Run Code Online (Sandbox Code Playgroud)

然后在我的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()
Run Code Online (Sandbox Code Playgroud)

这对于ios版本10和9非常有用.它是带有"发送"按钮的文本视图.它位于屏幕的底部,按下后,成为第一响应者,允许键盘上升并正确定位.

使用ios 11时,我甚至无法在底部点击它,所以我根本无法打字.

ahb*_*bou 7

这是iOS 11上的已知错误.UIToolbar子视图无法获取触摸事件,因为工具栏的某些内部视图未正确设置.

当前的解决方法是在添加子视图之前调用toolBar.layoutIfNeeded().

在你的情况下:

inputFieldView.layoutIfNeeded()
Run Code Online (Sandbox Code Playgroud)

希望这将在下一个主要版本上得到修复.