3

我有一個UITableView,我想要響應水龍頭和垂直滑動,但仍然有類似於水平滑動的userInteractionEnabled = NO。我的意思是,它不會處理觸摸並將觸摸事件傳遞迴其超級視圖。將UITableView上的水平滑動事件轉發到父視圖

事情我已經試過了沒有工作:

  • - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

  • 重寫touchesBegan/touchesMoved/touchesEnded返回NO並傳遞事件到下一個響應者

  • 添加用於水平滑動的手勢識別器並將cancelsTouchesInView設置爲YES

我一直在努力解決這個問題,並關閉了幾個星期,所以任何幫助非常感謝!

+0

你想刷什麼?由於滑動是一種獨立的手勢,您需要傳遞給超級視圖的是什麼? – rdelmar

+0

我希望將整個滑動手勢傳遞給超級視圖。 UITableView位於iCarousel視圖內,它本質上是一個水平滾動視圖。我想讓iCarousel視圖處理當前由UITableView處理的水平滑動手勢。 –

+0

我回答了,但要獲得更具體的信息,我建議您添加其他詳細信息 – LombaX

回答

0

您是否嘗試在表視圖的父視圖中添加水平滑動手勢識別器?同時關閉桌面視圖上的水平滾動。 (設置爲alwaysBounceHorizontal=NO

+0

桌面視圖需要垂直滾動。 tableview的父視圖已經響應了水平滑動,他們剛剛被UITableView攔截,這正是我想要阻止的。 –

+0

對不起,我的意思是關閉_horizo​​ntal_在你的桌子視圖上滾動。 – nielsbot

+0

另外,嘗試在表視圖委託中將'NO'應答到'-tableView:canEditRowAtIndexPath:'。 – nielsbot

0

禁用用戶對每個表格視圖單元格的交互應該有所幫助。 我建議在cellForRowAtIndexPath方法中做。

-1

這個問題的答案並不簡單,因爲UITableView管理很多觸摸,而這個觸摸是由不同的組件管理的。 所以,給你一個正確和工作的答案,你必須解釋:

  • 要禁用哪種刷卡的(左到右,從右到左)
  • 在哪裏(上空表視圖,對細胞)
  • 現在發生了什麼,當你做到這一點輕掃(細胞進入編輯模式,導航控制器進入前一頁ECC ....)

例如:通過覆蓋touchesBegan:withEvent無法避免UITableViewCell上的輕掃刪除操作,因爲uch由內部內容視圖接收(UITableViewCellContentView私人課程,因此您無法繼承並覆蓋touchesBegan:withEvent)。 但是,這不是必要的,因爲可以禁用此行爲添加此方法的UITableViewController:當禁用編輯(例如)

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewCellEditingStyleNone; 
} 

細胞和表視圖沒有更多的能夠管理所述觸摸的,所以觸摸被轉發給鏈中的下一個響應者。

這只是一個例子,你必須解釋所有給你不重要的行爲讓我們更多地幫助你的例子。

最後的建議: 在this Page你會發現一個非常好的和有趣的解釋如何擊中測試結束事件處理過程的作品。 當您添加更多詳細信息時,我會用更具體的信息更新答案。

問候

法比奧

2

你可以更好的爲子視圖顏色tableview.view空視圖應該 空,並添加手勢到view.if手勢方向是 vertical.scroll的tableview