2013-04-08 48 views
0

我想知道的是如何識別用戶在模式對話框之外輕敲的時間。 我試過這個,但是當用戶在外面點擊時沒有被調用。如何在對話框打開時識別模式對話框外的輕擊手勢

這是我的viewDidLoad方法,它駐留在ModalDialogViewController.m文件中 UITapGestureRecognizer * recognitionizer;

 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的協議。

回答

3

有點晚了這裏,但只是櫃面有人來到這裏由谷歌的方式:

設置手勢識別出現視圖後應該發生。在viewDidLoad方法調用期間,視圖的窗口爲零,因此手勢識別器永遠不會被添加。

將方法調用放在viewDidAppear中,它應該按預期工作。

0

你是否在你的.h文件中設置了UIGestureRecognizerDelegate?

你可以得到UIGestureRecognition的行爲完全信息Apple doc

使用UIGestureRecognizers是非常簡單的。您只需執行以下步驟: 創建一個手勢識別器。當您創建手勢識別器時,您可以指定回調方法,以便姿勢識別器可以在手勢開始,更改或結束時向您發送更新。

將手勢識別器添加到視圖。每個手勢識別器都與一個(且只有一個)視圖相關聯。當在該視圖的範圍內發生觸摸時,手勢識別器將查看它是否與它正在查找的觸摸類型相匹配,並且如果找到匹配,它將通知回調方法。

您可以以編程方式執行這兩個步驟,但更容易使用Storyboard編輯器在視覺上添加手勢識別器。

See Full tutorial and working here

+0

是的我已經在.h文件中設置了UIGestureRecognizerDelegate。 – user1898829 2013-04-08 12:03:36

相關問題