输入附件查看Swift Bug

时间:2015-01-06 17:40:39

标签: ios objective-c swift ios8 inputaccessoryview

我有一个名为聊天视图控制器的视图控制器,它在故事板中组织如下: Chat View Controller Storyboard Layout

使用导航控制器访问。基本上这个视图控制器是一个类似于Apple的消息应用程序的视图。 "查看"您可以在底部的聊天视图控制器外看到的是我尝试添加为输入附件视图的视图,称为messagingView。要将其添加为输入附件视图,我在聊天视图控制器中使用此代码:

override var inputAccessoryView: UIView {
    return messagingView // This is the "View"
}

override func canBecomeFirstResponder() -> Bool {
    return true
}

现在加载视图时,messagingView会添加到视图中,但它的高度为568px!对messagingView的宽度/高度没有任何限制,这会自动添加为名为" _UIKBAutolayoutHeightConstraint"的约束。我尝试在Apple自己的KeyboardAccessory示例代码中使用我的messagingView,它完美地工作(用Objective C编写)。我试过在Swift中重新创建它们的示例代码,它给出了与我一样的完全相同的问题!这一定是一个Swift bug?!还是我忘了做某事?

谢谢

1 个答案:

答案 0 :(得分:2)

很确定这是Swift中的一个错误。发现最简单的方法是编辑_UIKBAutolayoutHeightConstraint中的updateViewConstraints()常量,以便在视图出现之前重新加载inputAccessoryView的高度

override func updateViewConstraints() {
    let constraint:NSLayoutConstraint = (tableView.inputAccessoryView!.constraints() as NSArray).objectAtIndex(0) as NSLayoutConstraint
    constraint.constant = 52
    super.updateViewConstraints()
}