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 在 iOS 7 的兼容模式下没有获得 iOS 6 样式
UIButton 没有在 iOS7 的 UIPageViewController 中的 ViewController 中突出显示
iOS7 AutoLayout UIButton没有收到整个按钮的触摸