2012-08-16 11 views
0

我有一個UITableViewCell子類中的元素有輕擊手勢識別器或UIButtons的情況。當我點擊一個擁有自己的處理程序的元素時,爲什麼委託調用didSelectRowAtIndexPath?

當我點擊它們時,不僅其處理程序被調用,而且didSelectRowAtIndexPath:委託方法也是如此。

現在,理想情況下,如果用戶不點擊任何這些元素,則應將其傳遞到下方的視圖(即tableview或表格單元格)並進行處理。

爲什麼這些元素不能吞噬觸摸並阻止TableView委託方法被觸發?

回答

0

我「黑客」,它將一個tapGesture識別我的UITableViewCell子類的內容查看,它代表一個解決方案是我的自定義子類的UITableViewController 。我使用了一個空的didSelectRowAtIndexPath:實現。代表的方法是

- (void)didSelectTableCell:(MyTableViewCell*)aCell; 

這樣做的工作。只需要記住單元格的創建時間,以確保我設置了委託。

不雅,但工作正常。

0

你需要重寫以下功能..

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

在這裏,您可以檢查觸摸從您所選擇的控制啓動,如果這是你需要返回NO,以防止默認動作的情況下從發生在這裏..並返回如果前面定義的處理程序是被稱爲

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ 
    if(touch.view == self.playButton) { 
     return NO; 
    } 
    return YES; 
} 
+0

重寫它什麼對象?我想阻止UITableViewCell子類接收觸摸 – horseshoe7 2012-08-21 15:02:27

相關問題