2015-01-06 16 views
0

我有一個視圖控制器,名爲聊天視圖控制器,這是在故事板安排如下: Chat View Controller Storyboard Layout輸入附件查看斯威夫特錯誤

這與導航控制器訪問。基本上這個視圖控制器是一個類似於蘋果的消息應用程序的視圖。在視圖底部的聊天視圖控制器外部可以看到的「視圖」是我試圖添加爲輸入配件視圖並稱爲messagingView的視圖。要添加此作爲輸入附件的看法,我使用聊天視圖控制器內的驗證碼

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

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

現在,當視圖加載時,messagingView被添加到視圖,但它的高度是568px!消息傳遞視圖的寬度/高度沒有限制,並且會自動添加爲稱爲「_UIKBAutolayoutHeightConstraint」的約束。我嘗試過在Apple自己的KeyboardAccessory示例代碼中使用我的messagingView,並且它完美地工作(這是用Objective C編寫的)。我已經嘗試在Swift中重新創建它們的示例代碼,它給出了和我一樣的問題!這一定是一個Swift錯誤?!還是我忘了做點什麼?

謝謝

+0

你嘗試把制約高度在故事板前? – Steve

+0

@Steve是的我嘗試過,但它會導致「約束衝突」並消除我的約束! – Tometoyou

回答

0

很確定這是Swift中的一個bug。研究發現,最簡單的方法是在updateViewConstraints()編輯_UIKBAutolayoutHeightConstraint常數,使其重新加載inputAccessoryView的高度視圖出現

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