UIControl addTarget:action:forControlEvents:除非与superview相同,否则无法正常工作

时间:2014-10-20 10:37:09

标签: objective-c uicontrol

E.g。

UIButton *b = [Uibutton alloc...
[b addTarget:self action:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];

// Using Masonry to add constraints:
[b makeConstraints:^(MASConstraintMaker *make) {

  // Match superview - works
  make.top.left.bottom.right.equalTo(superview);

  // Smaller than superview - doesn't work
  make.top.left.right.top.equalTo(superview);
  make.height.equalTo(@32);
}];

任何想法为什么?

只有我能找到的问题才能找到this question的答案,但它的细节含糊不清。

1 个答案:

答案 0 :(得分:0)

我不熟悉Masonry MASConstraintMaker,但我认为如果你使用button.frame会发生同样的事情吗?或者您出于某种原因无法使用button.frame?

如果你的按钮在它的超级视图之外它将无法工作..这导致我建议(虽然有点天真和简单)你的按钮被设置在它的超视图之外...可能因为它使用superview.frame而不是superview.bounds ..这是你需要用于superView框架引用

button.frame = CGRectMake(button.superview.bounds.origin.x, button.superview.bounds.origin.y, button.superview.bounds.size.width, 32.0f);