2014-10-20 2 views
0

E.g.UIControl addTarget: действие: forControlEvents: не работает, если тот же размер, что и супервизор

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, но он неясен в деталях.

ответ

0

Я не знаком с масонством MASConstraintMaker, но я предполагаю, что это произойдет, если вы используете button.frame? Или что вы почему-то не можете использовать button.frame?

Если ваша кнопка находится вне его супервизора, это не сработает. Это заставляет меня предлагать (хотя и немного наивно и упрощенно), что ваша кнопка устанавливается вне ее надзора ... потенциально, потому что она использует супервизор. рамки, а не superview.bounds .. это то, что вам нужно использовать для ссылок на кадры superView

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

Спасибо. Просто для того, чтобы уточнить: это не специфично для масонства, а просто, что рамка представления не содержалась в виде супервизора. – user3452758

Смежные вопросы