我需要跟踪 tableView.contentOffset.y 是否可以将观察者添加到 tableView.contentOffset?
我认为这是不可能的,因为 contentOffset 不继承 NSObject 类。
还有其他解决方案吗?
我需要跟踪 tableView.contentOffset.y 是否可以将观察者添加到 tableView.contentOffset?
我认为这是不可能的,因为 contentOffset 不继承 NSObject 类。
还有其他解决方案吗?
UITableView
是一个UIScrollView
子类,因此您可以使用该UIScrollViewDelegate
方法scrollViewDidScroll:
在视图滚动时得到通知。检查该contentOffset
方法中scrollView
的
contentOffset
是一个关键路径,所以你也可以使用 KVO 观察它的变化
[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
斯威夫特 5
tableContentObserver = table.observe(\UITableView.contentOffset, options: .new) { [weak self] table, change in
self?.navigationItem.rightBarButtonItem?.title = "\(change.newValue)"
}
斯威夫特 3
contentOffset
使用键值观察 (KVO)为键路径添加观察者:
tableView.addObserver(self, forKeyPath: #keyPath(UIScrollView.contentOffset), options: [.old, .new], context: nil)
并处理更改通知:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(UIScrollView.contentOffset) {
// Your code
}
}