2014-03-26 50 views
1

我想有一個UIScrollView,我可以與UITableView進行交互(主要是水平滑動來顯示圖像)。UITableView +可觸摸的UIView/UIScrollView behin

我們的想法是,設置的UITableView tableHeaderView相同尺寸比具有明顯的backgroundColor和不透明組爲NO的UIScrollView的,並添加

[self.view addSubview:self.scrollView belowSubview:self.tableView]; 

因此,UITableView的將逐漸覆蓋圖像畫廊滾動時 - 如果我直接將UIScrollView設置爲tableHeaderView或作爲節標題,則不會出現這種情況。

它起作用(從視覺角度來看)。

但是我不能在下面的UIScrollView上進行交互或刷卡,所有東西都被tableView攔截。我認爲設置清潔顏色+不透明=否會做的伎倆。

有什麼想法?

感謝

羅曼

回答

2

所以,據我所知,你要放置UITableView的頂部,其內容將出現在UIScrollView,但你想要的UIScrollView接收觸摸事件?如你所設置的那樣,這是不可能發生的,因爲UITableView將在其邊界內接收所有觸摸事件,因爲它必須啓用用戶交互。 考慮以下之一:基於其滾動位置

  1. 修改UITableView,這樣反而有tableHeaderView的,表視圖自身的大小(你可以用一個UIScrollViewDelegate跟蹤此),所以它涵蓋了UIScrollView爲表格視圖滾動。
  2. 覆蓋UITableViewtableHeaderView中的觸摸處理方法(touchesBegan:withEvent:等),以便在適當時手動將觸摸事件轉發到UIScrollView。這是一個討厭的解決方案,但它可能會訣竅。
  3. 重寫pointInside:withEvent:裏面的UITableView。該方法是觸摸處理系統用來確定視圖是否最初應該接受觸摸事件的方法。如果將其修改爲拒絕要將觸摸發送到UIScrollView的點,那麼它將不會在該區域接收到任何觸摸,並且它們將默認到它下面的視圖。
+0

感謝您的評論。據我瞭解,3)可能適當/更快的解決方案? 我會試一試,讓你知道盡快。 謝謝 羅曼 –

+0

小心#3。這是一個關鍵的方法,如果修改方法不當可能會導致很難修復的錯誤,但這是完成預期設計的最簡單方法。 –

+0

我首先提出你的第一個建議:基本上,它運作良好。但是,在scrollviewDidScroll委託中滾動時,我並不滿意UX。 我決定去第四個選項:我保留我的UITableView .tableHeaderView,在它上面添加UISwipeGestureRecognizer(左/右),並用它們來控制UITableView下面的UIPageControl和UIScrollView。 感謝您的支持:) –