iOS8 - 如何在 iOS 8 中更改长按手势的灵敏度

标签 ios objective-c cocoa-touch ios8 uilongpressgesturerecogni

我有一个 UIView 长按时会翻转。在模拟器中效果很好,但在现实世界中,人的手指在按下时会有微小的 Action 。这些微小的 Action 重置手势并立即触发手势结束状态。

- (void)viewDidLoad {
...

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(didLongPress:)];
    longPress.minimumPressDuration = 0.7;
    [self.view addGestureRecognizer:longPress];
}


- (void)didLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
    if ( gestureRecognizer.state == UIGestureRecognizerStateBegan )
    {
        [UIView transitionFromView:self.questionCardView toView:self.answerCardView
                          duration:1.0
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        completion:nil];
    }
    else
    {
        [UIView transitionFromView:self.answerCardView toView:self.questionCardView
                          duration:1.0
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        completion:^(BOOL finished){
                            [self.view addSubview:self.questionCardView];
                            [self.view sendSubviewToBack:self.questionCardView];
                        }];
    }
}

最佳答案

您需要在手势识别器的处理程序中正确检查手势的状态。

尝试:

- (void)didLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
    if ( gestureRecognizer.state == UIGestureRecognizerStateBegan )
    {
        [UIView transitionFromView:self.questionCardView toView:self.answerCardView
                          duration:1.0
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        completion:nil];
    }
    else if ( gestureRecognizer.state == UIGestureRecognizerStateEnded )
    {
        [UIView transitionFromView:self.answerCardView toView:self.questionCardView
                          duration:1.0
                           options:UIViewAnimationOptionTransitionFlipFromRight
                        completion:^(BOOL finished){
                            [self.view addSubview:self.questionCardView];
                            [self.view sendSubviewToBack:self.questionCardView];
                        }];
    }
}

如您所见,else除了手势结束之外,每个小 Action 都会调用 block 。

关于iOS8 - 如何在 iOS 8 中更改长按手势的灵敏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33192294/

相关文章:

ios - 用于删除 tableView 中的行的 UIAlert

objective-c - 请求访问联系人(日历、提醒、Facebook 等)自定义消息

iOS 设置应用角标(Badge)值

javascript - 有没有办法在触发 onclick 时禁用 iPad/iPhone 上的闪光灯/闪烁?

ios - 有效地更新 UITabelView 单元格

objective-c - 使用 "unsigned char"指向原始数据缓冲区时需要了解内存管理

objective-c - 如何从 NSTableView 中删除所有 NSTableColumns?

ios - 将应用发送到后台时执行NSLog

iphone - 根据 iOS 版本禁用委托(delegate)方法

cocoa-touch - UIColor colorWithRed 中的奇怪参数 :green:blue:alpha: