AutoLayout: NSInternalInconsistencyException с iOS11
Аварийное завершение работы приложения со следующими журналами (PFA), и это происходит только в iOS 11.
Неустранимое исключение: NSInternalInconsistencyException, невозможно настроить макет с иерархией представления, неподготовленной к ограничению.
__120- [UIView (UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint: roundingAdjustment: взаимно исключая Constraints:]_block_invoke_2
Обновление:-
Сценарий:- У меня есть UIToolbar на клавиатуре, код для добавления
Иерархия представления не подготовлена для ограничения: NSLayoutConstraint:0x1c0295540 V:[UIToolbar:0x10219f550]-(0)-[_UIRemoteKeyboardPlaceholderV iew:0x10219fab0] (неактивно)
#pragma mark KeyBoard Related Function
-(void)createInputAccessoryView:(NSInteger )tagNumber
{
inputAccessoryView = [[UIToolbar alloc]init];
[inputAccessoryView setBackgroundColor:kKYBOARDCOLOR];
[inputAccessoryView sizeToFit];
[inputAccessoryView setHidden:NO];
//Use this to put space in between your toolbox buttons
UIBarButtonItem *barSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
UIBarButtonItem *barBtnDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self action:@selector(actnResignKeyboard)];
NSArray *barItems;
barItems = [NSArray arrayWithObjects:barSpace,barBtnDone, nil];
[inputAccessoryView setItems:barItems animated:YES];
}
Появляющаяся и исчезающая клавиатура вызывает сбой, но когда я удаляю UIToolbar, то все работает нормально.
Примечание:- Этот код работает нормально до iOS 11.
1 ответ
Вы пытались распечатать трассировку стека, чтобы узнать, какая иерархия макетов или представлений вызывает это? Также попробуйте сначала добавить представления к суперпредставлению, а затем применить ограничения