输入附件视图 Swift 错误
Input Accessory View Swift Bug
我有一个名为 Chat View Controller 的 View Controller,它在 Storyboard 中的组织方式如下:
这是通过导航控制器访问的。这个 View Controller 基本上是一个类似于 Apple 的 Messages 应用程序的视图。您可以在底部的聊天视图控制器外部看到的 "View" 是我尝试添加为输入附件视图的视图,称为 messagingView。要将其添加为输入附件视图,我在聊天视图控制器中使用以下代码:
override var inputAccessoryView: UIView {
return messagingView // This is the "View"
}
override func canBecomeFirstResponder() -> Bool {
return true
}
现在当视图加载时,messagingView 被添加到视图中,但它的高度是 568px! messagingView 的 width/height 没有任何约束,它会自动添加为名为“_UIKBAutolayoutHeightConstraint”的约束。我已尝试在 Apple 自己的 KeyboardAccessory 示例代码中使用我的 messagingView,它运行良好(用 Objective C 编写)。我已经尝试在 Swift 中重新创建他们的示例代码,它给出了与我遇到的问题完全相同的问题!这一定是 Swift 错误?!还是我忘了做什么??
谢谢
很确定这是 Swift 中的错误。发现最简单的方法是编辑updateViewConstraints()
中的_UIKBAutolayoutHeightConstraint
常量,使其在view出现前重新加载inputAccessoryView的高度
override func updateViewConstraints() {
let constraint:NSLayoutConstraint = (tableView.inputAccessoryView!.constraints() as NSArray).objectAtIndex(0) as NSLayoutConstraint
constraint.constant = 52
super.updateViewConstraints()
}
我有一个名为 Chat View Controller 的 View Controller,它在 Storyboard 中的组织方式如下:
这是通过导航控制器访问的。这个 View Controller 基本上是一个类似于 Apple 的 Messages 应用程序的视图。您可以在底部的聊天视图控制器外部看到的 "View" 是我尝试添加为输入附件视图的视图,称为 messagingView。要将其添加为输入附件视图,我在聊天视图控制器中使用以下代码:
override var inputAccessoryView: UIView {
return messagingView // This is the "View"
}
override func canBecomeFirstResponder() -> Bool {
return true
}
现在当视图加载时,messagingView 被添加到视图中,但它的高度是 568px! messagingView 的 width/height 没有任何约束,它会自动添加为名为“_UIKBAutolayoutHeightConstraint”的约束。我已尝试在 Apple 自己的 KeyboardAccessory 示例代码中使用我的 messagingView,它运行良好(用 Objective C 编写)。我已经尝试在 Swift 中重新创建他们的示例代码,它给出了与我遇到的问题完全相同的问题!这一定是 Swift 错误?!还是我忘了做什么??
谢谢
很确定这是 Swift 中的错误。发现最简单的方法是编辑updateViewConstraints()
中的_UIKBAutolayoutHeightConstraint
常量,使其在view出现前重新加载inputAccessoryView的高度
override func updateViewConstraints() {
let constraint:NSLayoutConstraint = (tableView.inputAccessoryView!.constraints() as NSArray).objectAtIndex(0) as NSLayoutConstraint
constraint.constant = 52
super.updateViewConstraints()
}