2010-07-12 38 views
11

Tôi đang phát triển ứng dụng iPhone đầu tiên của mình và tôi sẽ đánh giá rất cao ý kiến ​​của bạn về vấn đề tôi đang gặp phải.iPhone - Nesting UIScrollViews cho phân trang ngang và cuộn dọc

Tôi đang tìm cách triển khai cuộn cả theo chiều ngang và chiều dọc. Tôi muốn cuộn ngang được phân trang, không có trang dọc được phân trang (cuộn "bình thường"). Một UIScrollView đơn với pagingEnabled được đặt thành YES sẽ trang theo cả hai hướng. Các giải pháp tự nhiên sẽ được làm tổ một UIScrollView bên trong một số khác, tuy nhiên khi tôi làm điều đó, tôi không thể có được "bên trong" UIScrollView để cuộn ở tất cả. Dường như một trong những bên ngoài được "ăn" lên tất cả các sự kiện vòi nước, như trong:

UIScrollView : paging horizontally, scrolling vertically?

Tôi đọc một cái gì đó về "di chuyển bên trong" được cải thiện khi trong SDK 3.0 và thực sự khi tôi thêm một UITableView bên trong thay vì một UIScrollView cuộn hoạt động hoàn hảo. Kể từ khi UITableView subclasses UIScrollView tôi tưởng tượng rằng hành vi mong muốn của tôi sẽ đạt được bằng cách làm cho lớp con của riêng tôi của UIScrollView.

Đây có phải là phương pháp phù hợp không? Nếu vậy, phân lớp này trông như thế nào?

Trả lời

9

Tính năng này hoạt động ngay bây giờ với SDK. Xem Scrolling MadnessApple's UIPageControl sample để biết hướng dẫn về cách triển khai cuộn ngang được phân trang bằng trình điều khiển chế độ xem cho mỗi trang.

UIScrollViews lồng nhau bạn thêm dưới dạng bản xem trước vào UIScrollView bên ngoài của bạn phải có cùng chiều cao khung như vùng chứa. Nếu bạn làm điều này thì UIScrollView bên ngoài sẽ đi qua các sự kiện cuộn dọc đến khung nhìn con. Ứng dụng của tôi có ba cấp độ của UIScrollView và UIWebView lồng và tôi đã tìm thấy Cocoa thực sự thông minh về việc chuyển các sự kiện sang một sự kiện mà tôi muốn miễn là tôi đặt kích thước khung hình của mình để chỉ một chế độ xem thực sự có thể cuộn được (contentSize> frame) mỗi trục.

+0

Cảm ơn bạn vì điều này. Điều này thực sự làm việc ra khỏi hộp.I tin rằng quan điểm cấp cao nhất của các trang cuộn dọc của bạn phải là một UIScrollView. Ban đầu, tôi đã có cuộn dọc của tôi dưới một UIView và điều này đã không làm việc như mong muốn. Ghi nhớ cũng để thiết lập contentSize của scrollers dọc của bạn. – user621267

0

Tôi đã sử dụng lib tuyệt vời này bởi Andrey Tarantsov hàng tháng trời: SoloComponents

Bạn có thể sử dụng nó như một "UITableView ngang" với sự hỗ trợ cho pagination và xem tái chế. Được thiết kế theo phong cách cacao được chế tạo hoàn hảo.

0

Dựa trên câu trả lời của Dylan, trong trường hợp của tôi, tôi thực sự cũng phải làm cho chiều cao kích thước nội dung bằng nhau cho cả cha mẹ và lồng nhau UIScrollViews để tạo UIScrollView lồng nhau để cuộn theo chiều dọc. Chỉ tạo "chiều cao khung giống như vùng chứa" như Dylan đã giải thích là chưa đủ:

parentScrollView.contentSize = CGSizeMake(parentScrollView.contentSize.width, desiredContentHeight); 
nestedScrollView.contentSize = CGSizeMake(nestedScrollView.frame.size.width, desiredContentHeight); 
Các vấn đề liên quan