iOS Tap 手势状态开始不命中

标签 ios cocoa-touch

我已经使用点击手势识别器制作了一个可点击的 View ,它工作得很好。但我想在触摸发生时突出显示 View ,并在触摸结束时将其删除。

我试过这个:

- (IBAction)refresh:(UITapGestureRecognizer *)sender {
    if(self.currentStatus == NODATA){
        if(sender.state == UIGestureRecognizerStateBegan){
            NSLog(@"Began!");
            [self.dashboardViewController.calendarContainer state:UIViewContainerStatusSELECTED];
        }
        if (sender.state == UIGestureRecognizerStateEnded){
             NSLog(@"%@", @"Ended");
            [self.dashboardViewController.calendarContainer state:UIViewContainerStatusNORMAL];
        } 
        [self setState:REFRESHING data:nil];
    }
}

“已结束”的 NSLog 得到显示,但开始没有显示,因此它永远不会被选中。这是为什么?

最佳答案

UITapGestureRecognizer 永远不会进入 UIGestureRecognizerStateBegan 状态。只有 连续 手势(例如轻扫或捏合)才会导致其识别器从 UIGestureRecognizerStatePossible 变为 UIGestureRecognizerStateBegan离散 手势(例如点击)将其识别器直接放入 UIGestureRecognizerStateRecognized,即对于单次点击,直接放入 UIGestureRecognizerStateEnded

也就是说,也许您正在寻找一个 UILongPressGestureRecognizer,它是一个连续识别器,将进入 UIGestureRecognizerStateBegan,让您辨别触摸的开始和结束?

关于iOS Tap 手势状态开始不命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068724/

相关文章:

ios - “[自身数据] [日期]”是什么意思?

ios - 仅在 ViewController 上显示一次警报

objective-c - 每个分段的UISegmentedControl自定义图像

iphone - 如何在iOS5(Retina)中设置导航栏的背景?

ios - 隐式转换失去整数精度Xcode 5.1

iphone - iPhone 上的 SQLite 表无效?

ios - ARKit - 点击屏幕后物体粘在相机上

objective-c - 如何将动态创建的 UIWebView 从 loadHTMLString 保存到文档目录?

iphone - 使用 presentsWithGesture 时未调用 UISplitViewControllerDelegate 方法?

iphone - 如何在 iOS 上以全精度打印 double ?