UITableView Scroll event

前端 未结 3 1439
渐次进展
渐次进展 2020-11-29 09:12

I want to detect if mytable view has been scrolled, I tried all touch events like this one:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
         


        
相关标签:
3条回答
  • 2020-11-29 09:22

    If you implement the UITableViewDelegate protocol, you can also implement one of the UIScrollViewDelegate methods:

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
    

    or

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    

    For example, if you have a property called 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");
    }
    

    This is because UITableViewDelegate conforms to UIScrollViewDelegate, as can be seen in the documentation or in the header file.

    0 讨论(0)
  • 2020-11-29 09:22

    These are the methods from UITableViewDelegate for Swift 3 to detect when an UITableView will scroll or did scroll:

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    
    }
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
    
    }
    
    0 讨论(0)
  • 2020-11-29 09:27

    If you have more than one table views as asked by Solidus, you can cast the scrollview from the callback to tableview as UITableView is derived from UIScrollView and then compare with the tableviews to find the source tableview.

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {    
            UITableView* fromTableView = (UITableView*) scrollView;
            UITableView* targetTableView = nil;
            if (fromTableView == self.leftTable) {
                targetTableView = self.leftTable;
            } else {
                targetTableView = self.rightTable;
            }
    ...
    }
    
    0 讨论(0)
提交回复
热议问题