在UITableView中未调用scrollviewDidEndDragging

时间:2015-10-09 03:30:05

标签: ios objective-c uitableview ios8

我有一个UIViewController,其中包含UITableView。我想使用UIScrollViewDelegate来捕捉表格的滚动。正确设置了表的委托,因为我可以执行UITableView方法,但在滚动时,会调用方法scrollViewDidScroll,但不会调用scrollViewDidEndDragging。我还实现了scrollViewWillEndDragging和其他人,但只调用了scrollViewDidScroll。所以我想知道为什么scrollViewDidEndDragging没有被调用。

修改

实际上这里并不多,只记录事件。

这个叫做

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{

DDLogVerbose(@"did scroll");

}

这个名字不叫

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    DDLogVerbose(@"end drag");
}

修改

好的,我尝试在我的UItableview子类中添加scrollViewDidEndDragging,它确实有效。那么如何让我的viewcontroller处理scrollViewDidEndDragging呢?

1 个答案:

答案 0 :(得分:1)

我创建了一个干净的项目并添加了一个tableView来测试它。以下是代码:

@interface ViewController () <UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate>

@end

@implementation ViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"end drag");
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"end decelerating");
}

@end

以下是拖延后的日志:

2015-10-09 14:21:57.442 test[85247:453953] end drag
2015-10-09 14:21:58.178 test[85247:453953] end decelerating

因此调用这些方法。

您应该粘贴更多代码以帮助我们找到问题。