我有2个自定义UIViews,我正在添加到我的UIViewController,然后使用NSLayoutConstraint对齐它们.在UIViewController视图上应用NSLayoutConstraint后,自定义UIViews中的UIButtons不再接收触摸事件.
- (void)viewDidLoad
{
[super viewDidLoad];
navigationBar = [[DtNavigationBar alloc] initWithFrame:CGRectMake(0,0,320,45)];
[navigationBar setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:navigationBar];
switchBar = [[DtSwitch alloc] initWithFrame:CGRectMake(0,0,320,44)];
[switchBar setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:switchBar];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[navigationBar(45)]-0-[switchBar(44)]-(>=100)-|"
options:NSLayoutFormatAlignAllLeft metrics:nil
views:NSDictionaryOfVariableBindings(switchBar, navigationBar)]];
}
Run Code Online (Sandbox Code Playgroud)
DtNavigationBar和DtSwitch都有UIButton视图仍然显示在正确的位置但不再响应触摸.
如果我删除addConstraints部分(并手动放置视图),那么按钮工作正常.
mat*_*att 15
问题是,在选择使用约束后,您没有使用足够的约束.你的布局模糊不清.
要测试此假设,请运行应用程序,然后在调试器中暂停并在lldb控制台中输入:
po [[UIWindow keyWindow] _autolayoutTrace]
Run Code Online (Sandbox Code Playgroud)
AMBIGUOUS LAYOUT这个词会出现在回复的某个地方.
你需要足够的约束才能使这些词语消失.您必须完全确定故事中所有内容的垂直和水平位置以及宽度和高度.