ios - UILongPressGestureRecognizer 退出 UIView 时不跟踪触摸

标签 ios

我使用 UILongPressGestureRecognizer 来跟踪 UIView 内的触摸,这就是我的代码

-(void)tapGes:(UILongPressGestureRecognizer *)tapGesture
{
CGPoint location=[tapGesture locationInView:self.view];
UIView *view=tapGesture.view;
switch (tapGesture.state)
{
    case UIGestureRecognizerStateBegan:
        NSLog(@"enter");
        break;
    case UIGestureRecognizerStateEnded:
        NSLog(@"ended");
        break;
    case UIGestureRecognizerStateChanged:
        if (location.x>view.frame.size.width ||
            location.y>view.frame.size.height)
        {
            NSLog(@"out");
            return;
        }
        NSLog(@"change");
        break;
    default:
        break;
}
}

当状态 UIGestureRecognizerStateChanged 中的触摸脱离 UIView 时我想做什么,我不再跟踪它,这样我就不会到达状态 UIGestureRecognizerStateEnded 如何实现这一点?

最佳答案

您始终可以向层次结构添加额外的 View ,并将手势添加到该 View 。这将使您能够跟踪手势位置并根据 subview 的框架进行检查。我的意思是,如果您当前的 View 是 100x100 点,您可以为其创建一个 120x120 点的透明父 View 。将手势添加到 120 点 View ,然后将手势的位置与 View 第一个 subview 的框架进行比较。

-(void)tapGes:(UILongPressGestureRecognizer *)tapGesture
{
    CGPoint location=[tapGesture locationInView:tapGesture.view];
    UIView *view = tapGesture.view;

    switch (tapGesture.state)
    {
        case UIGestureRecognizerStateBegan:
            NSLog(@"enter");
            break;
        case UIGestureRecognizerStateEnded:
            NSLog(@"ended");
            break;
        case UIGestureRecognizerStateChanged:
            if (CGRectContainsPoint([view.subviews[0] frame], location)) {
                // location is within view
            }else{
                // location has exited view
            }
            NSLog(@"change");
            break;
        default:
            break;
    }
}

关于ios - UILongPressGestureRecognizer 退出 UIView 时不跟踪触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559382/

相关文章:

ios - 如果托管的iOS应用没有位置权限,WebView页面能否获取位置?

ios - 在 UITextField 中输入时自动附加小数

iOS setNeedsDisplay 在多个地区

ios - 如何以编程方式将按钮添加到 UITableView 行?

ios - 在网站上上传视频文件会在iOS中抛出UIWebView

ios - 在 iOS 中使用动画更改按钮颜色

ios - 删除用户位置注释上的选择图像

ios - 为什么 UITableViewDataSource 或 UITableViewDelegate 不需要在 UITableView 中定义为弱?

ios - 避免转换问题的 Objective C 中的 MAX/MIN 函数

iphone - 使用 Image Magick 对 iPhone 中的图像进行边缘检测