UTTableView
là một lớp con của UIScrollView
, vì vậy bạn có thể sử dụng phương pháp scrollViewDidScroll
để sắp xếp lại vị trí cuộn TableView của bạn sau khi di chuyển.
Bạn có thể sử dụng tableView.contentOffset
để biết vị trí cuộn hiện tại của bạn ở đâu. Và bằng cách chia nó thành một số có ý nghĩa, bạn có thể nhận được ô nào ở trên cùng.
int cellIndex = tableView.contentOffset/cellHegiht;
Hoặc bạn có thể nhận tế bào hiện có thể nhìn thấy trên trung tâm (trên, dưới) như thế này:
NSArray *indexPathsForVisibleRows = [tableView indexPathsForVisibleRows];
NSIndexPath *selectedIndexPath = [indexPathsForVisibleRows objectAtIndex:(indexPathsForVisibleRows.count/2)]; //this gets center cell
Sau khi tính mà tế bào cần được bấm bằng cạnh của nó trên đầu (hoặc cuối), bạn có thể sửa trôi dạt từ mép tế bào bằng cách gọi:
[tableView scrollToRowAtIndexPath:selectedIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
Bạn có thể sử dụng các phương pháp để kích hoạt UIScrollViewDelegate
snapping. Bạn có thể kích hoạt khi hoạt ảnh cuộn hoàn thành hoặc trong khi hoạt ảnh vẫn tiếp tục. Điều này sẽ tạo ra sự tương tác của người dùng khác nhau và không thể nói là một tương tác tốt hơn thì khác.
Nhưng chỉ thực hiện phương pháp sau đây và không có gì khác trông giống như sẽ yêu thích của tôi:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
int cellHeight = 41;
*targetContentOffset = CGPointMake(targetContentOffset->x,
targetContentOffset->y - (((int)targetContentOffset->y) % cellHeight));
}
Phương pháp này được gọi khi người dùng chạm lên trên TableView
để thông báo cho ứng dụng. targetContentOffset
là biến số inout
để bạn thực sự có thể đặt vị trí cuộn cuối cùng trong khi hoạt ảnh đang tiếp tục. Sử dụng đúng cellHeight
, TableView
của bạn sẽ luôn chụp nhanh các ô.
Nguồn
2011-11-10 15:37:22
Cảm ơn bạn đã cho biết cách sử dụng biến 'inout'. Tính năng rất đẹp! – Besi
+1 Tôi cũng cảm ơn bạn đã chỉ ra biến "inout". – jpswain
Với toán học của bạn - bạn không bao giờ có thể di chuyển đến hàng cuối cùng trong bảng ... không phải là một vấn đề để khắc phục mặc dù. - chắc chắn là giải pháp tốt nhất cho việc này. – scottbates22