我有一個簡單的UIInputViewController子類只有兩個重寫的方法。我在我的UIViewController子類上使用這個輸入視圖控制器作爲inputAccessoryViewController
,它成爲第一響應者。我嘗試通過Apple文檔推薦的約束添加約束來指定inputView的高度。 問題是,我的約束不工作,我得到的,當被加入我的約束自動佈局例外無法更改UIInputView高度
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
...
(
"<NSLayoutConstraint:0x178aa1d0 V:[UIInputView:0x178a4ae0(0)]>",
"<NSLayoutConstraint:0x178b9520 V:[UIInputView:0x178a4ae0(500)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x178b9520 V:[UIInputView:0x178a4ae0(500)]>
我想這意味着該系統已添加了一個零高度約束到輸入視圖(因爲它是與創建零高度)。現在他們發生衝突,自動佈局打破了我的限制來解決問題。
當我嘗試使用它作爲我的視圖控制器的inputViewController
(僅用於測試目的)時,我得到相同的異常,但零高度爲216像素。它也打破了我的約束,高度仍然是默認值。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.inputView.translatesAutoresizingMaskIntoConstraints = NO;
self.inputView.backgroundColor = [UIColor redColor];
}
- (void)updateViewConstraints {
CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint =
[NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:0.0
constant: _expandedHeight];
[self.inputView addConstraint: _heightConstraint];
[super updateViewConstraints];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.view setNeedsUpdateConstraints];
}
因此,我無法更改輸入配件視圖高度。有人能成功嗎?顯然,Apple文檔沒有提供幫助...
V爲解決:[個體經營(0)]是很奇怪的 - 誰添加了這個約束?顯然,它需要被修復或至少被刪除。 – user3125367 2014-10-02 13:44:12
可能是一個冒險的解決方案,但是在updateConstraints中發現0/216約束(實際上除了你的高度以外,實際上只是高度上的所有約束)並將其設置爲較低值的優先級,因爲它在衝突時被無聲地跳過。 – user3125367 2014-10-02 13:48:25
@ user3125367「誰加了這個約束?」 - 確切的問題我正在尋找一個答案:)我會嘗試你的建議,併發布後,謝謝! – hybridcattt 2014-10-02 13:54:46