У меня есть простой подкласс UIInputViewController с двумя переопределенными методами. Я использую этот контроллер представления ввода как inputAccessoryViewController
в моем подклассе UIViewController, который становится первым ответчиком. Я пытаюсь указать высоту inputView, добавив ограничение, как рекомендует документация Apple.
Проблема в том, что мое ограничение не работает, и я получаю исключение автоопределения при добавлении моего ограничения.
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 px. Он также нарушает мое ограничение, и высота остается невыполненной.
- (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 не дает никакой помощи...