滚动时禁用 scrollPosition

Posted

技术标签:

【中文标题】滚动时禁用 scrollPosition【英文标题】:disable scrollPosition while scrolling 【发布时间】:2014-07-09 20:09:41 【问题描述】:

我有一个程序使用scrollPosition= UITableViewScrollPositionTop 在顶部显示选定的行。但是当我向下滚动并单击任何其他行时,滚动条会滚动回第一个选定的行。有什么办法可以在我滚动时禁用UIScrollPositionTop。或者还有其他解决方案吗?

此方法在定期间隔后调用以突出显示(选择)行。

-(void)highlightcell:(int *)rows 

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:*rows inSection:0]; 
[tableview selectRowAtIndexPath:indexPath animated:YES  scrollPosition:UITableViewScrollPositionTop];


【问题讨论】:

【参考方案1】:

您可以使用 UIScrollView 委托来检测滚动何时开始以及何时停止,然后使用标志来保持滚动状态,如下所示:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

    isScrolling = YES;


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
    isScrolling = NO;

然后在你的方法中:

-(void)highlightcell:(int *)rows 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:*rows inSection:0]; 

if (isScrolling) 
    [tableview selectRowAtIndexPath:indexPath animated:YES     scrollPosition:UITableViewScrollPositionNone];

else 
    [tableview selectRowAtIndexPath:indexPath animated:YES     scrollPosition:UITableViewScrollPositionTop];



【讨论】:

感谢您的回答。但它仍然不起作用。每当我向下滚动并尝试单击任何行时,它都会滚动回当前突出显示的行。 现在可以了。我按照您的建议使用了带有 scrollViewDidEndDragging 和 BOOL 值的 scrollViewDidEndAccerlating 方法。非常感谢男人【参考方案2】:

尝试这样做..

    Self.Table_small.scrollEnabled=NO;

【讨论】:

以上是关于滚动时禁用 scrollPosition的主要内容,如果未能解决你的问题,请参考以下文章

滚动时禁用 UITableView 垂直反弹

在我做其他事情时禁用放大滚动视图

滚动表格时如何禁用 PageViewController?

禁用 scrollViewDidScroll:滚动 UICollectionView 时 - iOS

“触摸”嵌入式 iframe 时如何禁用滚动?

如何暂时禁用滚动?