如何在对话框打开时识别模态对话框外的轻击手势

时间:2013-04-08 08:34:50

标签: ios objective-c ipad modal-dialog gesture-recognition

我想知道的是当用户点击模态对话框之外时如何识别。 我试过这个,但是当用户点击外面时它没有被调用。

这是我的viewDidLoad方法,它驻留在ModalDialogViewController.m文件中      UITapGestureRecognizer *识别器;

        if(![self.view.window.gestureRecognizers containsObject:recognizer])
        {
            recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];
            //[recognizer setDelegate:self];
            [recognizer setNumberOfTapsRequired:1];
            recognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view
            [self.view.window addGestureRecognizer:recognizer];

        }

这不是打开handleTapBehind方法。

我已将模态视图控制器设为UIGestureRecognition的协议。

2 个答案:

答案 0 :(得分:3)

这里有点晚了,但只是想让某人通过谷歌来到这里:

设置手势识别器应该在视图出现后进行。在viewDidLoad方法调用期间,视图的窗口为nil,因此手势识别器永远不会被添加。

将方法调用放在viewDidAppear中,它应该按预期工作。

答案 1 :(得分:0)

你有没有在你的.h文件中设置UIGestureRecognizerDelegate?

您可以在Apple doc

中获取有关UIGestureRecognition行为的完整信息

使用UIGestureRecognizers非常简单。您只需执行以下步骤: 创建手势识别器。创建手势识别器时,您可以指定一种回调方法,以便手势识别器可以在手势开始,更改或结束时向您发送更新。

将手势识别器添加到视图中。每个手势识别器与一个(且仅一个)视图相关联。当在该视图的边界内发生触摸时,手势识别器将查看它是否与其正在寻找的触摸类型匹配,如果找到匹配,则它将通知回调方法。

您可以以编程方式执行这两个步骤,但使用Storyboard编辑器直观地添加手势识别器会更容易。

See Full tutorial and working here