UIButton没有在ios7上注册

时间:2013-10-18 07:58:07

标签: ios ios7

我有一个按钮,它在iOS 5和6上照常工作。但是在iOS 7上按下按钮键盘解除,但是方法没有被调用。当我第二次按它时它按预期工作。

为什么?

以下是代码:

[self.loginButton addTarget:self action:@selector(loginButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

我在UITableView单元格中有按钮。

编辑:

以下是我在此方法开始时解除键盘的方法,但在第二次点击按钮之前,此方法不会被调用到iOS7。

for (UITextField *field in @[self.loginField, self.passwordField]) {
    if ([field isFirstResponder]) {
        [field resignFirstResponder];
    }
}

我还有手势识别器来移除外面的键盘:

UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(removeKeyboard)];
[self.view addGestureRecognizer:tapper];
tapper.cancelsTouchesInView = NO;

这是方法:

- (void) removeKeyboard
{
    [self traverseAllSubviewsOfView:self.view withBlock:^(UIView *inView) {
        [inView resignFirstResponder];
    }];
}

2 个答案:

答案 0 :(得分:1)

以下是帮助我的原因 - 我将控制器设置为手势识别器的委托,并实现以下方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if touch is on button
    if ([touch.view isKindOfClass:[UIControl class]]) {
        return NO;
    }
    return YES; // handle the touch
}

答案 1 :(得分:0)

您是否检查了手势识别器的cancelsTouchesInView属性?此属性控制是否将触摸传递到任何基础视图。因此,将此设置为NO应该允许将触摸发送到您的按钮。更多细节here.

可以在代码或Interface Builder中设置此属性。您可以通过突出显示手势识别器在IB中进行设置,并在“属性”检查器中取消选中“取消视图中的触摸”(我认为)。

我目前不在Mac的前面,因此我无法确认准确的措辞。