TouchesEnded第二次不被召唤

时间:2013-03-05 23:51:52

标签: ios uigesturerecognizer

我的问题如下:

我正在标准视图控制器中显示带附件的消息视图。当用户按下并保持附件图标时,它在屏幕上显示图像,当用户放开时图像消失。这是为了帮助在用户查看图像时检测屏幕截图。

我使用长按手势识别器来检测触摸,然后触摸或触摸取消以检测触摸的释放。

当用户用第二根手指按下屏幕时,我的问题就出现了,因为没有报告第二次触摸的释放。代码如下,方法按此顺序调用:

  1. 首先长按 - > attachmentLongPressed名为
  2. 第二次长按 - > attachmentLongPressed名为
  3. 释放第一根手指 - > touchesEnded叫
  4. 释放第二根手指 - >什么都没有叫

    -(void)attachmentImageLongPressed:(UIImageView *)sender{
    
        if(!self.isAttachmentOpen){
    
            [self setAttachmentOpen:YES];
    
            // Show image...
    
        }
    }
    
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    
        [self setAttachmentOpen:NO];
    
        // Remove image from view
    
    }
    
    -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if(self.isAttachmentOpen){
    
            [self screenshotDetected];
    
        }
    }
    
  5. 结果是图像视图留在屏幕上而无法将其关闭。有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为应该在释放第二根手指时调用touchesEnded。您可以记录所有回调中的所有触摸,以找出正在调用的方法,

但是,长按手势可能会延迟触摸结束事件,因此请尝试将delayedTouchesEnded设置为FALSE。

gestureLongPressed.delaysTouchesEnded = FALSE