Tôi có một lớp con UIInputViewController đơn giản chỉ với hai phương pháp ghi đè. Tôi sử dụng bộ điều khiển xem đầu vào này là inputAccessoryViewController
trên lớp con UIViewController của tôi để trở thành người trả lời đầu tiên. Tôi cố gắng xác định chiều cao của inputView bằng cách thêm ràng buộc như tài liệu của Apple khuyến cáo. Vấn đề là hạn chế của tôi không làm việc và tôi nhận được ngoại lệ autolayout khi hạn chế của tôi đang được thêmKhông thể thay đổi chiều cao 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)]>
Mà tôi nghĩ có nghĩa là hệ thống đã thêm một hạn chế zero chiều cao với quan điểm đầu vào (bởi vì nó được tạo ra với không chiều cao). Bây giờ họ xung đột và autolayout phá vỡ hạn chế của tôi để khắc phục vấn đề.
Khi tôi cố gắng sử dụng nó như inputViewController
của bộ điều khiển chế độ xem của tôi (chỉ dành cho mục đích thử nghiệm), tôi nhận được ngoại lệ tương tự nhưng thay vì chiều cao bằng không, nó là 216 px. Nó cũng phá vỡ ràng buộc của tôi và chiều cao vẫn mặc định.
- (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];
}
Kết quả là tôi không thể thay đổi chiều cao chế độ xem phụ kiện đầu vào. Có ai thành công trong đó không? Rõ ràng, tài liệu Apple không cung cấp trợ giúp ...
V: [self (0)] rất lạ - ai đã thêm hạn chế này? Rõ ràng, nó cần phải được cố định hoặc ít nhất là loại bỏ. – user3125367
Có thể là một giải pháp hacky, nhưng trong updateConstraints thấy rằng ràng buộc 0/216 (thực sự tất cả các ràng buộc trên chiều cao chỉ, ngoại trừ của bạn) và đặt ưu tiên của nó là giá trị thấp hơn, cho nó được bỏ qua âm thầm trên các xung đột. – user3125367
@ user3125367 "ai đã thêm ràng buộc này?" - câu hỏi chính xác Tôi đang tìm một câu trả lời cho :) Tôi sẽ cố gắng đề xuất của bạn và đăng bài sau, cảm ơn! – hybridcattt