ios - UIGestureRecognizer 通过触摸移出 UIView

标签 ios objective-c uigesturerecognizer

我有一个 UILongPressGestureREcognizer,最小按下时间为 0 秒。在 UIGestureRecognizerStateStart 上,我更改了 UIView。在 UIGestureRecognizerStateEnded 上,我运行代码来执行媒体想要执行的操作。

-(IBAction)longPressDetected:(UILongPressGestureRecognizer *)recognizer {    
    static NSTimer *timer = nil;

    if (recognizer.state == UIGestureRecognizerStateBegan) {
        // alter look of UIView
    }
    else if (recognizer.state == UIGestureRecognizerStateEnded) {
        // do something
        // change look back to original state
    }
}

我遇到了一个问题,如果触摸在 UIView 上开始并且触摸被拖到 UIView 之外并被解除,则 UIGestureRecognizerStateEnded 仍然会触发。

我需要能够处理 UIView 内部的触摸,用户将其拖动到 UIView 外部并取消它。

我知道 UIButton 可以做到这一点,但它并不能满足我的所有需求。

如果触摸被拖动到 UIView 之外,如何取消触摸?

最佳答案

添加触摸位置检查。这个方法很有用。

- (CGPoint)locationInView:(UIView *)view

关于ios - UIGestureRecognizer 通过触摸移出 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053327/

相关文章:

iphone - 使用字符串 "Settings"设置 Controller 标题不起作用

ios - 来自Objective-C中URL的数组

ios - 如何实现velocityInView : for a custom gesture recognizer?

ios - UILongPressGestureRecognizer 识别其 View 外的触摸

ios - 生成PDF时出现内存压力崩溃

ios - 将类添加为通知观察者后未调用方法

ios - Cordova 白名单 iOS 10 SSL 错误 : Failed to load resource: An SSL error has occurred and a secure connection to the server cannot be made

objective-c - iPhone 测试 : testing IBOutlets

iphone - ARC 下紧密循环中 UIKit 的内存管理

ios - SceneKit 相机节点在捏手势时重置