2013-04-30 60 views
2

我試圖用覆蓋它的UIView構建自定義表視圖。我試圖識別常規UIView上的特殊手勢,特別是平移手勢,需要雙擊才能激活它(點擊並按住,然後平移)。從UIView傳遞觸摸事件在UITableView上

我目前有一個自定義的UITableViewController,以及一個自定義的UIView。我想嘗試保持它作爲一個UITableViewController而不是一個UITableView在UIViewController中出於兼容性的原因(很容易替換現有的UITableViewControllers)。

我可以得到一個雙擊和平底鍋沒有問題,但問題是我實際上不能再在表視圖中選擇一行。我可以在表格內滾動,但實際選擇不起作用。

理想情況下,我希望能夠在任何自定義表格視圖單元格中保留所有的水龍頭,滑動和常規事件(例如,可以向左或向右滑動以激活特定動作的清除或郵箱)。

我知道我可以從表格視圖中的方法indexPathForRowAtPoint: 中獲取表格視圖單元格,但這隻允許我選擇切換。

我也試着重寫觸摸起因是這樣的:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    [self.nextResponder touchesBegan: touches withEvent: event]; 
} 

以及其它相關事件,並已證實nextResponder是自定義的UITableViewController,但一直無法做任何事情。

我簽入了一堆其他職位,但沒有解決方案爲我工作。我曾嘗試一些其他的事情是:

  • 添加一個水龍頭手勢識別,並將其轉發到的UITableViewController

    [_containingTableViewController gestureRecognizerShouldBegin: tapGesture]; 
    
  • 實現不同的手勢識別代表

    -(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch: (UITouch *)touch{ 
        return (touch.tapCount >= 2); 
    } 
    

    除了YES和NO都是:

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

另外,在桌面視圖上,我試過設置canCancelContentTouches,但兩個值都不起作用。

任何幫助將不勝感激,我已經嘗試了很多,但不能得到它!

如果確實需要完成,我可能會在GitHub上發佈完整的項目,但我必須首先清理它。

謝謝!

回答

0

我不明白你的麻煩,所以我不知道這是否能幫助你,但你可以使用的方法setUserInteractionEnabled *到的UIViewUITableViewFALSE/NO禁用任何類型上的事件。