我有一個子屏幕圖像的網格顯示在屏幕上;它基本上是以棋盤方式放置在屏幕上的一系列圖像。我只是想爲這些圖像子視圖中的每一個添加手勢識別器,以便當用戶觸摸其中一個圖像子視圖時,我可以檢索子視圖,即座標,標籤等。我的視圖層次結構如下所示:如何將手勢識別器添加到一系列子視圖?
- 超級視圖
- 一個gridContainer視圖
- 和每個個體子視圖 - 與圖像
看着蘋果文檔後,它好像我應該能夠手勢識別添加到gridContainer視圖和每個子視圖 - 與im年齡 - 應該繼承手勢識別器。到目前爲止,這是我嘗試過的:我已經在getter中分配了初始化網格容器視圖。另外,在getter中,我調用了我的createGesture方法,該方法應該將一個手勢識別器添加到gridContainer視圖。但是,我在運行時收到一個錯誤,指向我的actionSingleTap方法。它讀取EXC_BAD_EXCESS。 還值得注意的是,我不希望我的gridContainer視圖以外的視圖響應任何觸摸事件。預先感謝您的幫助。
這裏是我想要實現的代碼:
- (UIView *)gridContainerView
{
if (!_gridContainerView)_gridContainerView = [[UIView alloc] init];
[self createGesture];
return _gridContainerView;
}
- (void)createGesture
{
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self.gridContainerView
action:@selector(handleSingleTap:)];
singleTap.numberOfTapsRequired = 1;
[self.gridContainerView addGestureRecognizer:singleTap];
}
如果您需要看到任何額外的代碼,這是有道理的,請讓我知道。
編輯:包括handleSingleTap方法:
- (IBAction)handleSingleTap:(id)sender
{
CGPoint tapPoint = [sender locationInView:sender];
NSLog(@"sender = %@",sender);
NSLog(@"tappoint = %@", tapPoint);
}
所以我應該創建一個自定義類,它是UIView的子視圖?我是否應該將我的gridContainerView放入此自定義類中,然後在我需要訪問時在控制器中調用它? – Scott 2012-04-21 13:29:41
不是子視圖,而是子類。 – Till 2012-04-21 14:43:21