我有其中含有大量的UIButton的,使用的Xcode 4.5和故事板和ARC的项目。 在iOS6的测试后,一切顺利。 但在iOS5中,UIButton的触摸起来不工作的内部事件,不叫的动作。 我试图用触摸来,它的工作原理。 但是,我有很多的UIButton的,我不能改变的一个接一个。 更重要的是,在触及事件确实给了很好的经验。
我在我的许多视图控制器的使用的代码如下:在viewDidLoad中:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
-(void)dismissKeyboard {
[aTextField resignFirstResponder];
}
这可能是原因。 我稍后会检查出来。 但它在iOS6的。 你知道什么是错的? 非常感谢!
我有同样的问题给你。 这是因为当你注册的gestureRecognizer捕获事件防止了iOS5的触摸事件。
有两个解决方案。
一:
1)添加您的视图中的新观点。 它应该具有相同水平的按钮。 按钮的优先级应该比新的更高层。
2)“addGestureRecognizer”的呼叫切换到新的视图。
[self.newView addGestureRecognizer:tap];
二:
1)实施下面的代码。 当点中的按钮,你应该返回NO。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
CGPoint point = [gestureRecognizer locationInView:self.view];
NSLog(@"x = %.0f, y = %.0f", point.x, point.y);
if (CGRectContainsPoint(self.testBtn.layer.frame, point))
return NO;
return YES;
}
PS。 你应该导入QuartzCore.h到接入层的属性。
#import <QuartzCore/QuartzCore.h>
只需使用上UITapGestureRecognizer自来水属性“cancelsTouchesInView”(NO)
例:
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)];
gesture.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:gesture];
重写你的按钮父视图pointinside方法,设置包含您的按钮,一个新的自定义帧大小。