UIButton的触摸起来的iOS5不工作的内部事件,而它在iOS6的确定(UIButton tou

2019-08-04 01:13发布

我有其中含有大量的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的。 你知道什么是错的? 非常感谢!

Answer 1:

我有同样的问题给你。 这是因为当你注册的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>


Answer 2:

只需使用上UITapGestureRecognizer自来水属性“cancelsTouchesInView”(NO)

例:

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


Answer 3:

重写你的按钮父视图pointinside方法,设置包含您的按钮,一个新的自定义帧大小。



文章来源: UIButton touch up inside event not working in ios5 while it's ok in ios6