2011-01-01 22 views
5

Đôi khi, các gián đoạn như cuộc gọi điện thoại xảy ra và làm phiền hành vi thông thường của ứng dụng trong iPhone hoặc iPad.Làm thế nào để bắt được sự bốc xếp của UIScrollView hoặc những người khác?

Ví dụ: tôi đã tạo một cá thể UIScrollView và triển khai phương thức ủy nhiệm UIScrollView: scrollViewWillBeginDragging và scrollViewDidEndDragging (và scrollViewDidEndDecelerating).

Phương thức scrollViewWillBeginDragging đã hủy kích hoạt tất cả các nút tùy chỉnh trong ứng dụng của tôi. Sau đó, phương thức scrollViewDidEndDragging và scrollViewDidEndDecelerating kích hoạt các nút tùy chỉnh này. Đó là, trong khi người dùng cuộn, tất cả các nút tùy chỉnh đã bị ngừng hoạt động trong một thời gian.

Vấn đề là khi người dùng bắt đầu kéo và chỉ tổ chức một thể hiện UIScrollView, nếu tôi mất một ảnh chụp màn hình bằng cách nhấn một nút home và một nút nguồn, sau đó bất kỳ của scrollViewDidEndDragging và scrollViewDidEndDecelerating không được gọi. Vì vậy, các ứng dụng đã trở thành sai lầm lên.

Tôi đã triển khai phương thức UIApplicationWillResignActiveNotification trong UIViewController của mình, nhưng nó không được gọi sau khi chụp ảnh màn hình.

Làm cách nào để tôi có thể bắt gặp bất kỳ loại gián đoạn nào làm gián đoạn luồng sự kiện thông thường?

Đôi khi, chạm vàoĐưa và chạm Đã hủy không được gọi quá do gián đoạn.

Cảm ơn bạn.

+0

Cách triển khai viewWillAppear hoặc viewDidAppear và kiểm tra xem chúng có được gọi sau khi chụp ảnh màn hình không? Sau đó, trong các phương thức đó nếu (beDragged == TRUE) gọi phương thức scrollViewDidEndDragging của bạn. – adam

+0

Chế độ xemDidScroll cũng được gọi ngay cả khi bị gián đoạn? có lẽ không và ở đó bạn có một cách tiếp cận thay thế cho bạn vấn đề. – nacho4d

+0

Tôi mới làm quen với mọi thứ, vì vậy tôi không chắc chắn tại sao bạn lại vô hiệu hóa nút khi người dùng đang sử dụng chế độ xem khác? Ấn tượng tôi có từ các bài đọc khác nhau là thời gian duy nhất bạn muốn vô hiệu hóa một nút là khi nó thực sự không thể thực hiện chức năng của nó vì một số dữ liệu bị thiếu, tức là không có lựa chọn hoặc trường không điền, v.v. . –

Trả lời

2

Tôi phải đối mặt với cùng một vấn đề và loại bỏ nó bằng cách sử dụng phương pháp performSelector:withObject:afterDelay của NSObject.

Trong scrollViewDidScroll:

[NSObject cancelPreviousPerformRequestsWithTarget:yourController]; 
[yourController deactivateButtons]; 
[yourController performSelector:@selector(activateButtons) withObject:nil afterDelay:0.5]; 

Bạn có thể thử kỹ thuật này và kết hợp nó với khác mà bạn đề cập.
Hy vọng điều đó sẽ hữu ích. Chúc may mắn!

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