2014-11-17 15 views
13

Tôi có một bộ điều khiển xem với hệ thống cấp bậc này:cuộn Chuyển tiếp thẳng đứng từ UIScrollView để anh chị em UITableView

View Controller:

  • UIScrollView (cuộn theo chiều ngang)
  • UITableView (cuộn theo chiều dọc)

enter image description here

Tôi muốn chuyển tiếp các cuộn dọc từ UIScrollView của mình tới anh chị em UITableView, để khi người dùng cuộn lên trên UIScrollView, UITableView sẽ cuộn lên để thay thế. Điều gì sẽ là cách tốt nhất để làm điều đó?

Tôi đã thử các:

  • Phát hiện các cuộn dọc trong scrollViewDidScroll, nó không được gọi vì contentOffset của xem di chuyển không thay đổi.
  • Phân lớp UIScrollView và ghi đè touchesMoved, tôi không thể chuyển tiếp chạm vào chế độ xem bảng vì tôi không có tham chiếu đến nó trong lớp này.
+2

Bạn có thể làm điều này bằng cách tạo ra một cái nhìn minh bạch trên đầu trang của scrollview của bạn và sử dụng nó để nắm bắt cử chỉ. Vượt qua các cử chỉ thẳng đứng; chặn các cử chỉ ngang và chuyển chúng đến tableView. Phần quan trọng là ghi đè phương thức hitTest: withEvent trong chế độ xem trong suốt của bạn. (Nếu đó là không đủ để đi vào, lemme biết và tôi sẽ gửi một câu trả lời thực tế. :-) –

Trả lời

3

Nếu chế độ xem bảng được chứa trong chế độ xem cuộn, tôi tin rằng bạn có thể thiết lập trình nhận dạng cử chỉ của chế độ xem của cuộn để chỉ trả lời nếu trình nhận dạng cử chỉ của chế độ xem bảng không thành công. Tôi đã không có cơ hội để thử điều này, nhưng bạn sẽ có thể thiết lập một sự phụ thuộc giữa các cử chỉ cho mỗi quan điểm.

UITableView* tableView = ...; 
UIScrollView* scrollView = ...; 
for (UIGestureRecognizer* r in scrollView.gestureRecognizers) 
{ 
    for (UIGestureRecognizer* tableRecognizer in tableView.gestureRecognizers) 
    { 
     [r requireGestureRecognizerToFail:tableRecognizer]; 
    } 
} 
3

này sẽ làm cho di chuyển của bạn đồng thời với UITableViewUIScrollView và áp dụng @Stephen Johnson 's khối

- (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer 
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 
+0

bạn có thể xây dựng một số chi tiết? Tôi không thể làm được điều này. Cảm ơn! – McDJ

+0

bạn sẽ giải thích thêm? Tôi không thể đặt 'self' là đại biểu' UIScrollViewGestureRecognizer'! –

Các vấn đề liên quan