我有一個主視圖控制器,它被稱爲WelcomeViewController
。我有一個UIView子類,它有一些視圖相關的東西。我想添加一個UITapGestureRecognizer
到該子類。我只想讓手勢識別器確認子視圖內的水龍頭。我怎麼做。我應該把UITapGestureRecognizer
放在子類中嗎,還是應該把它放在Welcome vc中。提前致謝。問題與UITapGestureRecognizer
此外,我玩了一堆,似乎無法弄清楚。
我有一個主視圖控制器,它被稱爲WelcomeViewController
。我有一個UIView子類,它有一些視圖相關的東西。我想添加一個UITapGestureRecognizer
到該子類。我只想讓手勢識別器確認子視圖內的水龍頭。我怎麼做。我應該把UITapGestureRecognizer
放在子類中嗎,還是應該把它放在Welcome vc中。提前致謝。問題與UITapGestureRecognizer
此外,我玩了一堆,似乎無法弄清楚。
您可以選擇UITapGestureRecognizer
的接收器,它不必與實例化識別器的類相同(即self
)。如果您在WelcomeViewConroller
創建它,你可以選擇任何子視圖接收的事件:
[tapRecognizer addTarget:aSubview action:@selector(myMethod:)];
這取決於你是否要處理的自來水把定製的視圖對象,或在視圖控制器。
如果在視圖中,將它添加到它的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日----
對於那些你們誰喜歡用故事板/筆尖,這是超級簡單!
打開你的故事板/筆尖。
將所需的識別器從Object Library拖放到所需的UI元素上。
右鍵單擊識別器對象,然後將其selector
連接到文件所有者(通常是UIViewController)中的IBAction。如果需要,也可以連接委託。
你完成了!
我認爲你需要設置手勢識別的代表是你要處理的水龍頭任何視圖控制器。
gestureRecognizer.delegate = self;
例如。然後在頭中採用UIGestureRecognizerDelegate協議。
這是我的問題 - 謝謝。 – 2012-04-30 13:05:25
我想你可能有我遇到的同樣的問題。當你調用[yourCustomView addGestureRecognizer:tapRecognizer];你需要在你的例子通過一個UIView *參考,因此 嘗試:
UIView *mySubView = yourCustomView;
[mySubView addGestureRecognizer:tapRecognizer];
希望這會有所幫助。
請檢查view.userInteractionEnabled=true;
這是默認情況下嗎? – Andrew 2013-06-20 15:20:51
是的,它是默認的, – 2014-01-23 10:47:18
不,這一部分我很好。我將手勢識別器添加到哪個子視圖。 – Andrew 2011-05-10 19:08:22
將響應水龍頭的子視圖。 – 2011-05-10 19:10:11
但我似乎無法得到那個工作 – Andrew 2011-05-10 19:12:06