繁体   English   中英

用于内部Touch Up的全局事件处理程序

[英]Global Event handler for Touch Up Inside

我有一个触摸操作,可以触发调整大小的场景,该操作从触摸移动开始,需要在touchesEnded结束。 事实是,由于用户拖动手指,touchesEnd可能位于不同的UI视图上。 如何注册* global“ touchesEnded侦听器?

您应该使用UIPanGestureRecognizer 每次触发时,请检查手势识别器的state 如果是UIGestureRecognizerStateBegan则首先触摸视图;如果是UIGestureRecognizerStateChanged则用户正在移动手指;如果是UIGestureRecognizerStateEnded则用户已经抬起手指。

只要手势在您的视图上开始,即使离开视图的边界,它也会继续(除非取消),因此您不必担心“使其成为全局”。

使用以下方法初始化手势识别器:

UIPanGestureRecognizer *dragViewGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleDragView:)];
dragViewGestureRecognizer.maximumNumberOfTouches = 1;
[yourView addGestureRecognizer:dragViewGestureRecognizer];

然后使用所需的代码填写以下方法:

- (void)handleDragView:(UIPanGestureRecognizer*)panGestureRecognizer {
    switch (panGestureRecognizer.state) {
        case UIGestureRecognizerStateBegan: {
            //Code when dragging starts
            break;
        } case UIGestureRecognizerStateChanged: {
            //Code while dragging is happening (if needed)
            break;
        } case UIGestureRecognizerStateEnded: {
            //Code when dragging ends
            break;
        }
        default:
            break;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM