按钮在iOS7上无法注册

3

我有一个按钮,它在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];
    }];
}

好的,你的问题让我想起了这个: https://dev59.com/TGIk5IYBdhLWcg3wl_PE 你应该看一下它。 - KIDdAe
2个回答

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
}

0

你有检查手势识别器的cancelsTouchesInView属性吗?这个属性控制是否将触摸传递给任何底层视图。因此,将其设置为NO应该允许触摸发送到您的按钮。更多细节在这里

这个属性可以在代码或Interface Builder中设置。您可以通过突出显示手势识别器并在属性检查器中取消选中“Cancels Touches in View”(我想)来在IB中设置它。

我目前不在Mac前面,所以无法确认确切的措辞。


正如您在我的代码中所看到的,我使用了它,但它在iOS 7上没有帮助。 - Dvole
抱歉,糟糕了!我错过了那个! - Sam Meadley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接