AutoLayout:iOS11的NSInternalInconsistencyException

时间:2017-10-11 07:38:16

标签: ios objective-c autolayout ios11

应用程序因以下日志(P.F.A)而崩溃,并且仅在iOS 11中崩溃。

  

致命异常:NSInternalInconsistencyException,无法设置   视图层次结构的布局没有为约束做好准备。

     

__ 120- [UIView(UIConstraintBasedLayout)_layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutualExclusiveConstraints:] _ block_invoke_2

enter image description here

更新: -

场景: - 我在键盘上有一个UIToolbar,用于添加

的代码

视图层次结构没有为约束准备:NSLayoutConstraint:0x1c0295540 V:[UIToolbar:0x10219f550] - (0) - [_ UIRemoteKeyboardPlaceholderView: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 个答案:

答案 0 :(得分:0)

您是否尝试打印堆栈跟踪以了解哪个布局或视图层次结构导致此问题?另外,首先尝试将视图添加到superview,然后应用约束