UIButton没有在ios7上注册

Posted

技术标签:

【中文标题】UIButton没有在ios7上注册【英文标题】:UIButton not registering on ios7 【发布时间】:2013-10-18 07:58:06 【问题描述】:

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

【问题讨论】:

好的,那么你的问题让我想起了这个:***.com/questions/19126391/…你应该看看它 【参考方案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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

正如您在我的代码中看到的那样,我使用了它,但它在 ios 7 中没有帮助。 糟糕-抱歉。错过了!

以上是关于UIButton没有在ios7上注册的主要内容,如果未能解决你的问题,请参考以下文章

UIButton在iOS7中没有显示突出显示

UIButton 在 iOS 7 的兼容模式下没有获得 iOS 6 样式

UIButton 没有在 iOS7 的 UIPageViewController 中的 ViewController 中突出显示

iOS7 AutoLayout UIButton没有收到整个按钮的触摸

respondsToSelector 在 UIButton 上为“setTitle:”返回 YES,但没有这样的选择器

UITableViewCell 中的 UIButton 在 iOS7 中不起作用