2012-03-18 32 views
6

Tôi đang cố tạo một số kiểu xem dòng thời gian như trong trình chỉnh sửa video: các phần tử phương tiện liên tiếp, là UIView. Tôi có thể kéo thành công các chế độ xem này trong phần hiển thị hiện tại của chế độ xem cuộn bằng cách sử dụng các sự kiện chạm UIScrollView như touchesBegantouchesMoved. Tôi muốn cuộn chế độ xem cuộn khi chế độ xem con được kéo đến một trong các cạnh xem cuộn. Điều tốt nhất tôi có thể nghĩ đến bây giờ là tạo bộ hẹn giờ sẽ cuộn chế độ xem trong khi người dùng giữ subview bằng ngón tay gần cạnh xem cuộn.Làm cách nào để kéo chế độ xem trong UIScrollView bằng cách cuộn gần các cạnh?

Có rất nhiều câu hỏi ở đây về cùng một chủ đề, nhưng tôi không thể tìm thấy câu hỏi bao gồm cuộn.

Có cách nào tốt để thực hiện việc này không? Tôi có nên sử dụng trình nhận dạng cử chỉ để thay thế không?

Cảm ơn bạn trước.

+0

bạn có thể nhận được vị trí của liên lạc và nếu nó nằm trong "vùng/cạnh" tăng/giảm scrollOffSet, nên làm cho nó xuất hiện để cuộn –

+0

Đó là cách tôi đang làm bây giờ, nhưng tôi không thích kết quả, hoạt hình là giật và mã có vẻ không đáng tin cậy, gây ra nó phụ thuộc vào giờ. – anticyclope

Trả lời

8

Thực ra bạn muốn IS là sự kiện theo thời gian. Ngay sau khi người dùng ở cạnh của chế độ xem cuộn, bạn bắt đầu hẹn giờ, thường xuyên tăng số contentOffset. Nếu bạn không thích kết quả hoạt hình của mình (tôi đoán bạn đang sử dụng setContentOffset:animated:?), Chỉ cần thử một khoảng thời gian và khoảng cách hoạt ảnh khác. Tôi đoán bạn phải thử một số cài đặt khác. Những gì tôi sẽ cố gắng đầu tiên là 1px tại một thời điểm. Có lẽ cứ sau 0,3 giây?

Nếu điều đó không hiệu quả, bạn cũng có thể thử một "cực đoan" khác. Bắt đầu một hoạt ảnh đơn lẻ, khi người dùng đến cạnh, làm cho contentOffset hoạt hình cho đến khi kết thúc contentSize. Nhưng trên một khoảng thời gian lớn để chuyển động chậm. Nếu người dùng dừng kéo hoặc di chuyển ra khỏi cạnh, hãy dừng hoạt ảnh ở vị trí hiện tại. Điều đó thậm chí sẽ là một giải pháp không có bộ hẹn giờ, bởi vì hoạt ảnh sẽ là bộ hẹn giờ của bạn.

+0

Thực ra, tôi phải đóng bounty này ngay bây giờ, kể từ khi tôi đã thực hiện nó theo cách bạn mô tả trong đoạn đầu tiên (đó cũng là ý tưởng đầu tiên của tôi). Vấn đề chính là tích hợp hành vi này vào lớp con xem cuộn của tôi, vì các bản xem con của nó được lưu trữ như các ô trong các khung nhìn bảng. Dù sao, tôi hạnh phúc ngay cả với giờ. Tôi nghĩ bạn có thể thêm một số điểm vào câu trả lời, như cách cập nhật vị trí của chế độ xem hiện tại đã kéo (để giữ nó dưới ngón tay trong khi scrollview đang cuộn) trong khi hoạt ảnh, vì vậy câu trả lời sẽ hoàn thành và giải thưởng sẽ là của bạn :) – anticyclope

+0

thực sự vấn đề được hỏi ở đây không phải là về việc kéo thực tế trong một scrollview - có những cách tiếp cận khác nhau. Tôi sẽ tham khảo tìm kiếm ở đây, hoặc ví dụ: câu hỏi đó: http://stackoverflow.com/questions/9715582/iphone-ios-how-to-implement-drag-and-drop-for-subviews-of-a-scrollview/9844006#9844006 – calimarkus

+0

Kéo ra ngoài câu hỏi ở đây, nhưng giữ cho chế độ xem ổn định, trong khi scrollview cơ bản là cuộn với hình động là không rõ ràng với tôi, có thể bởi vì tôi đã không thử được nêu ra. – anticyclope

0

Tôi nghiêm túc nghi ngờ người nhận dạng cử chỉ sẽ là một phần của giải pháp tốt cho điều này vì chúng có xu hướng hữu ích nhất với cử chỉ kín đáo.

Tôi không nghĩ rằng tôi có thể cải thiện theo hướng chung của bạn dựa trên giả định, ngụ ý ở trên, rằng bạn đang tìm kiếm cuộn liên tục/dần dần.

Những gì tôi đề nghị thay vào đó là bạn xem xét việc thiết kế này để sử dụng phương pháp di chuyển phân trang. Khi người dùng của bạn kéo đối tượng vào cạnh của scrollview, làm cho scrollview di chuyển một trang theo hướng đó (bằng cách đặt contentOffset để di chuyển theo hướng đó theo các giới hạn của scrollview). Khi điều đó xảy ra, hãy di chuyển đối tượng ra khỏi vùng "nóng" ở cạnh của scrollview để người dùng buộc phải thể hiện rõ ràng rằng họ muốn di chuyển một trang khác hoặc một thứ gì đó dọc theo các dòng đó - nghĩa là, cách tiếp cận thiết kế phụ thuộc vào "sự kiện phân trang" này, bạn cần triển khai một số loại hệ thống cử chỉ để người dùng tiếp tục phân trang.

Tôi cho rằng bạn có thể sử dụng bộ hẹn giờ trong cùng tình huống đó, để nếu người dùng duy trì vị trí và chạm vào một giây khác, bạn sẽ lại trang.

+1

thats không giành chiến thắng .. và bạn vẫn có một bộ đếm thời gian .. thực sự nó là một giải pháp khá xấu, nếu bạn nghĩ về một trình biên tập video. phân trang sẽ không thực sự giúp đỡ ở đây. Ngoài ra nó là một trải nghiệm người dùng tồi, nếu bạn định vị lại một đối tượng, đang ở trạng thái kéo ... – calimarkus

+0

Một số trình nhận dạng cử chỉ thực sự ổn. Nếu bạn sử dụng trình nhận dạng cử chỉ báo chí dài, bạn sẽ nhận được các bản cập nhật vị trí nếu bạn kéo sau khi nhấn và giữ 'nhấn' trong. Tôi đang sử dụng thành công để triển khai kéo như một phần của báo chí dài (tức làlàm một báo chí dài, sau đó bắt đầu kéo một khi báo chí dài đã được công nhận). – occulus

+0

Chỉ cần thêm - Tôi có thể sửa đổi cách tiếp cận này tại một số điểm, vì điểm yếu là nếu ngón tay/con trỏ của người dùng di chuyển thậm chí một chút trong suốt báo chí dài, nó không được công nhận là một báo chí dài ... – occulus

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