2012-01-21 57 views
3

觸摸點捕獲我想捕捉的UITableViewController觸摸x位置。 在網絡中所描述的最簡單的解決方法是UITapGestureRecognizerenter link description hereiPhone:在的UITableViewController

但在這種情況下,didSelectRowAtIndexPath方法停止。

TU如何使用這兩個事件的,或如何得到(NSIndexPath *)indexPath參數singleTapGestureCaptured

問候

[編輯] 我不能回答我的問題。 解決的辦法是:

NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:接觸點]

回答

0

你無法不搞亂表視圖的觸摸事件處理添加一個手勢識別。

你不明確你想達到什麼目標,所以不可能推薦替代品。任何與捕捉觸摸事件相關的事情都會變得複雜:響應者鏈條很複雜。

的簡單的方法似乎是在子類重載didSelectRowAtIndexPath方法,並調用超之前做任何你想做...

2

我懷疑OP仍然在等待一個答案,但對於未來搜索的好處:

你可以抓住觸摸事件在細胞內,行爲,那麼要麼放棄它,或者通過它的鏈條:

@interface MyCell : UITableViewCell 
// ... 
@end 

@implementation MyCell 
// ... 

- (void) touchesBegan: (NSSet*) touches withEvent: (UIEvent*) event 
{ 
    UITouch* touch = [[event allTouches] anyObject]; 
    CGPoint someLocation = [touch locationInView: someView]; 
    CGPoint otherLocation = [touch locationInView: otherView]; 
    if ([someView pointInside: someLocation: withEvent: event]) 
    { 
     // The touch was inside someView. Do some stuff, 
     // but don't invoke tableView:didSelectRowAtIndexPath: on the delegate. 
    } 
    else if ([otherView pointInside: otherLocation: withEvent: event]) 
    { 
     // The touch was inside otherView. Do other stuff. 

     // Send the touch on for processing, and tableView:didSelectRowAtIndexPath: handling. 
     [super touchesBegan: touches withEvent: event]; 
    } 
    else 
    { 
     // Send the touch on for processing, and tableView:didSelectRowAtIndexPath: handling. 
     [super touchesBegan: touches withEvent: event]; 
    } 
} 
@end 
相關問題