7

我有一個主視圖控制器,它被稱爲WelcomeViewController。我有一個UIView子類,它有一些視圖相關的東西。我想添加一個UITapGestureRecognizer到該子類。我只想讓手勢識別器確認子視圖內的水龍頭。我怎麼做。我應該把UITapGestureRecognizer放在子類中嗎,還是應該把它放在Welcome vc中。提前致謝。問題與UITapGestureRecognizer

此外,我玩了一堆,似乎無法弄清楚。

回答

1

您可以選擇UITapGestureRecognizer的接收器,它不必與實例化識別器的類相同(即self)。如果您在WelcomeViewConroller創建它,你可以選擇任何子視圖接收的事件:

[tapRecognizer addTarget:aSubview action:@selector(myMethod:)]; 
+0

不,這一部分我很好。我將手勢識別器添加到哪個子視圖。 – Andrew 2011-05-10 19:08:22

+0

將響應水龍頭的子視圖。 – 2011-05-10 19:10:11

+0

但我似乎無法得到那個工作 – Andrew 2011-05-10 19:12:06

18

這取決於你是否要處理的自來水把定製的視圖對象,或在視圖控制器。

如果在視圖中,將它添加到它的init或其他合適的地方:

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[self addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 

如果視圖控制器,在viewDidLoad(或其他合適的位置)補充一點:

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[yourCustomView addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 

處理器是相同的:

- (void)handleTap:(UITapGestureRecognizer*)recognizer 
{ 
    // Do Your thing. 
    if (recognizer.state == UIGestureRecognizerStateEnded) 
    { 
    } 
} 

看看SimpleGestureRecognizers的例子,你應該得到一個不錯的主意。

----更新2012年10月1日----

對於那些你們誰喜歡用故事板/筆尖,這是超級簡單!

  1. 打開你的故事板/筆尖。

  2. 將所需的識別器從Object Library拖放到所需的UI元素上。

  3. 右鍵單擊識別器對象,然後將其selector連接到文件所有者(通常是UIViewController)中的IBAction。如果需要,也可以連接委託。

  4. 你完成了! enter image description here

+0

我很好與所有。問題是我將UIView分類到我的主視圖中。現在,我添加UITapGestureRecognizer到哪個視圖。子視圖(不工作)或主視圖(當我點擊任何地方,包括子視圖外部時,它使它工作) – Andrew 2011-05-10 19:11:43

+0

我已經完善了我的答案。這對你的情況更有意義嗎? – 2011-05-10 19:20:08

+0

您的主視圖可能不會將事件傳遞給子視圖。此外,您可以檢查觸摸點是否在子視圖框中。 – TheBlack 2011-05-10 21:22:55

2

我認爲你需要設置手勢識別的代表是你要處理的水龍頭任何視圖控制器。

gestureRecognizer.delegate = self; 

例如。然後在頭中採用UIGestureRecognizerDelegate協議。

+0

這是我的問題 - 謝謝。 – 2012-04-30 13:05:25

1

我想你可能有我遇到的同樣的問題。當你調用[yourCustomView addGestureRecognizer:tapRecognizer];你需要在你的例子通過一個UIView *參考,因此 嘗試:

UIView *mySubView = yourCustomView; 
[mySubView addGestureRecognizer:tapRecognizer]; 

希望這會有所幫助。

1

請檢查view.userInteractionEnabled=true;

+0

這是默認情況下嗎? – Andrew 2013-06-20 15:20:51

+0

是的,它是默認的, – 2014-01-23 10:47:18