开发者

How to intercept UIScrollView contentOffset changes from UITableView subclass?

Actually, a UITableView is a UIScrollView (inherits from that). Now, I made a UITableView subclass and added this line of code to it:

- (void)scr开发者_Python百科ollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"contentOffset: %@", NSStringFromCGPoint(self.contentOffset));
}

For some reason this is never called when I scroll the table view. But since UITableView has a delegate property on it's own, I assume that it must implement UIScrollViewDelegate protocol and is the delegate for the scroll view itself. Isn't it?

How could I intercept scroll position changes? I want to read them only. Probably I couldn't set them with contentOffset, right?


Probably I couldn't set them with contentOffset, right?

As UITableView inherits from UIScrollView you can get and set its contentOffset property.

Note also that UITableViewDelegate protocol is defined the following way:

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>

That is it conforms to UIScrollViewDelegate protocol as well so your tableView's delegate(not UITableView itself) can implement any UIScrollViewDelegate methods and they should get called fine.


Just implement setContentOffset: and call super after you read the values you want. A UITableView is a UIScrollView so you can scroll it by calling setContentOffset: as well.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜