2014-05-04 43 views
1

是否有添加多個UITapGestureRecognizers的簡單解決方案?我有一個包含UIImageView的表視圖標題。在圖像視圖邊緣是標題的清晰空間。我想要實現的是爲圖片視圖的標題和點擊方法添加一個tap方法。但是在標題中添加一個使用整個標題,包括圖像視圖。有沒有辦法將它們分開?uitableview標題中的單獨的輕擊手勢識別器

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 
    UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 250)]; 
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(35, 10, 250, 250)]; 
    _imageView = imageView; 
    _imageView.image = imageData; 
    UITapGestureRecognizer *headerTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(headerTapped:)]; 
    _headerTap = headerTap; 
    UITapGestureRecognizer *imagetap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageTapped:)]; 
    _imagetap = imagetap; 
    [header addGestureRecognizer:_headerTap]; 
    [_imageView addGestureRecognizer:_imagetap]; 
    [header addSubview:_imageView]; 
    return header; 
} 

回答

2

製作一個覆蓋整個標題的透明按鈕。
將圖像視圖放在它的上方,並用另一個透明按鈕覆蓋。

+0

是啊......我想這是一個方法去解決它。 – denikov

1

您可以通過偵聽手勢識別器的委託方法來完成此操作。根據您的觀點如何設置,您可以使用

(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

查看決定是否要讓識別器啓動。例如,我們有一個應用程序與下拉tableview執行選擇。我們安裝了兩個識別器,一個放在窗口上,這樣我們就可以在用戶在其外部點擊時將「下拉」捲起來,另一個放在「按鈕」上,這就是單元格的內容。我們使用這種方法來確定觸摸是否在我們可見的表格視圖之外,如果我們忽略它的話。

其他相關的委託方法是

(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

從你的描述,這似乎是最好用的。從這裏你可以告訴你的標題手勢識別器不要在圖像視圖旁邊發射。例如,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{  
    if (gestureRecognizer == self.headerGestureReconizer && otherGestureRecognizer == self.imageViewGestRecognizer) { 
     return NO; 
    } 

    return YES; 
} 

您還可以通過實例方法(void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer在手勢識別器中設置依賴關係。當你在同一個視圖上有一個點擊和一個雙擊識別器時,這是非常有用的,而且在這種情況下不是你想要的。

+0

經過小睡和淋浴後,我意識到你也可以在頭上使用1個手勢識別器來完成此操作。當它觸發時,可以使用UIView方法「在視圖座標系之間轉換」和「在視圖中點擊測試」來找出用戶點擊的位置並採取適當的操作。 – Brandon

+0

感謝您的回覆。對我來說這似乎很複雜哈哈也許一旦我對目標c變得更加舒服,我會嘗試實現這些方法。但是現在子視圖頂部的按鈕完全像我想要的那樣工作。 – denikov