Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableView滚动事件_Iphone_Objective C_Ios_Xcode_Uitableview - Fatal编程技术网

Iphone UITableView滚动事件

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

我想检测mytable视图是否已滚动,我尝试了以下所有触摸事件:

- (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) {

}