3

我有一个视图控制器,称为聊天视图控制器,它在 Storyboard 中组织如下: 聊天视图控制器故事板布局

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

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

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

现在当视图加载时,messagingView 被添加到视图中,但它的高度是 568px!消息视图的宽度/高度没有限制,它会自动添加为称为“_UIKBAutolayoutHeightConstraint”的约束。我尝试在 Apple 自己的 KeyboardAccessory 示例代码中使用我的 messingView,它运行良好(用 Objective C 编写)。我尝试在 Swift 中重新创建他们的示例代码,它给出的问题与我遇到的完全相同!这一定是一个 Swift 错误?!还是我忘记做某事??

谢谢

4

1 回答 1

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()
}
于 2015-01-07T12:39:08.377 回答