Swift3 iOS 11 inputAccessoryView已损坏

Swift3 iOS 11 inputAccessoryView已损坏,swift3,ios11,inputaccessoryview,Swift3,Ios11,Inputaccessoryview,我在视图控制器上为UIToolBar/附件视图设置了以下内容 @IBOutlet var inputFieldView: UIToolbar! override var canBecomeFirstResponder: Bool{ return true } override var inputAccessoryView: UIView?{ return self.inputFieldView } 然后在我的viewDidLoad中,我有: let seperator

我在视图控制器上为UIToolBar/附件视图设置了以下内容

@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,当它位于底部时,我甚至无法单击它,因此我根本无法键入。

解决了这个问题。看起来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)。

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

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

就你而言:

inputFieldView.layoutIfNeeded()

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

请显示完整的代码。我一直在努力让它出现。你是想重新制造我的问题,还是想解决你自己的问题@arvidurs@ahbou你知道这有没有雷达记录?如果可能的话,我想追踪一下