2010-03-01 27 views
6

tôi tham khảo câu hỏi này: How to detect when a UIScrollView has finished scrollingCó thể được thông báo khi UITableView kết thúc di chuyển không?

UITablewView là một lớp con của UIScrollView, và UITableView tôi đại biểu không nhận được thông báo - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView khi tôi di chuyển bàn bằng tay.

Tuy nhiên, khi tôi gọi - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated để cuộn bảng, tôi không nhận được thông báo scrollViewDidEndDecelerating. Tôi đang gọi phương thức scrollRowToIndexPath... với animated:YES.

Đây có phải là giới hạn lỗi/API (trên iPhone SDK 3.1.3) hay tôi đang thiếu một cách khác để thực hiện việc này?

+0

Giải pháp vừa phát triển để theo dõi cuộn kết thúc ứng dụng rộng rãi: http://stackoverflow.com/a/42705702/440168 – k06a

Trả lời

6

Chỉ trong trường hợp ai đó đang vẫn đuổi thế này, các tài liệu của Apple nói như sau dưới sự tài liệu scrollToRowAtIndexPath:atScrollPosition:animated::

"Gọi phương pháp này không gây ra các đại biểu để nhận scrollViewDidScroll: tin nhắn, như là bình thường cho hoạt động giao diện người dùng được triệu gọi theo chương trình. "

1

Tôi cũng gặp vấn đề tương tự. Nhưng tôi đã giải quyết nó bằng cách thực hiện việc này sau khi cuộn theo chương trình tới hàng được chỉ định:

NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 0.6 
               target: self 
              selector:@selector(doneScrolling) 
              userInfo: nil repeats:NO]; 

Trong trường hợp của tôi, tôi chỉ muốn đánh dấu hàng sau khi nó được cuộn đến.

HOẶC

Nếu bạn muốn mã thực thi hơn immediatly và không muốn phải chờ 0,6 giây, bạn có thể để lặp để liên tục kiểm tra xem hàng mà bạn đã cuộn để có thể nhìn thấy chưa . Sử dụng thuộc tính visibleCells trên UITableView. Khi nó có thể nhìn thấy, sau đó bạn biết nó được thực hiện di chuyển và bạn có thể thực thi mã của bạn.

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