【问题标题】:Input Accessory View Swift Bug输入附件视图 Swift Bug
【发布时间】:2015-01-06 17:40:38
【问题描述】:

我有一个视图控制器,称为聊天视图控制器,它在 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 错误?!还是我忘了做点什么?

谢谢

【问题讨论】:

  • 您是否尝试在情节提要中限制高度?
  • @Steve 是的,我确实尝试过,但它会导致“约束冲突”并删除我的约束!

标签: ios objective-c swift ios8 inputaccessoryview


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多