Iphone UITableView滚动事件
我想检测mytable视图是否已滚动,我尝试了以下所有触摸事件:Iphone UITableView滚动事件,iphone,objective-c,ios,xcode,uitableview,Iphone,Objective C,Ios,Xcode,Uitableview,我想检测mytable视图是否已滚动,我尝试了以下所有触摸事件: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; //my code } 但似乎所有的触摸事件都不会对滚动做出反应,但它们只会在细胞被触摸、移动等情况下做出反应 是否有方法检测UITableView的滚动事件?如果实现了UITabl
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//my code
}
但似乎所有的触摸事件都不会对滚动做出反应,但它们只会在细胞被触摸、移动等情况下做出反应
是否有方法检测UITableView的滚动事件?如果实现了
UITableViewDelegate
协议,还可以实现以下方法之一:
或
例如,如果您有一个名为tableView
的属性:
// ... setting up the table view here ...
self.tableView.delegate = self;
// ...
// Somewhere in your implementation file:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"Will begin dragging");
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"Did Scroll");
}
这是因为
UITableViewDelegate
符合UIScrollViewDelegate
,如文档或头文件所示。如果Solidus要求有多个表视图,您可以将scrollview从回调强制转换为tableview,因为UITableView是从UIScrollView派生的,然后与tableview进行比较以找到源tableview
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UITableView* fromTableView = (UITableView*) scrollView;
UITableView* targetTableView = nil;
if (fromTableView == self.leftTable) {
targetTableView = self.leftTable;
} else {
targetTableView = self.rightTable;
}
...
}
以下是Swift 3的
UITableViewDelegate
中的方法,用于检测UITableView
何时将滚动或是否已滚动:
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}
当我们有多个UITableView时,该怎么办?您应该能够将两个表视图的委托设置为
self
,然后使用传递的scrollView
检查哪个视图被滚动。完美这帮了我一个小提示:为了让==比较有效,你不必强制转换。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UITableView* fromTableView = (UITableView*) scrollView;
UITableView* targetTableView = nil;
if (fromTableView == self.leftTable) {
targetTableView = self.leftTable;
} else {
targetTableView = self.rightTable;
}
...
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
}