- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以人们对这个特定事件的大部分问题是在动画发生时让 scrollViewDidScroll
触发。我的情况正好相反。我觉得 scrollViewDidScroll
不应该在我的情况下触发。
让我进一步解释。
我在 scrollViewDidScroll 中制作动画,在我将 UITableView 移动到 UIView 类之前,它工作得很好。
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
// Animation code here.
NSLog(@"scrollViewDidScroll");
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"scrollViewDidEndDecelerating");
NSArray *indexPaths = [_myTableView indexPathsForVisibleRows];
[_myTableView scrollToRowAtIndexPath:[indexPaths objectAtIndex:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
这提供了一种平滑的滚动体验,可以快速返回到上一个表格行。控制台可以验证 scrollViewDidScroll
事件是否因 scrollToRowAtIndexPath
而触发。
控制台:
2014-03-31 22:21:43.346 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.379 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.429 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.462 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.479 Project[45843:a0b] scrollViewDidEndDecelerating
2014-03-31 22:21:43.496 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.513 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.529 Project[45843:a0b] scrollViewDidScroll
关于问题:
1。如何确保事件 scrollViewDidScroll
仅因用户交互而非代码自动化而触发?
2。是否有另一种方法可以提供与 scrollToRowAtIndexPath
相同的功能而不触发 scrollViewDidScroll
?
最佳答案
我知道这是一个非常古老的问题。我只是处于类似的情况,我只需要在用户滚动时运行一些代码,而不是在我调用 scrollToRowAtIndexPath
时。我找到了一个更简单的解决方案,使用 scrollView 变量 dragging
和 decelerating
。
我们这里有 3 种滚动的情况。
scrollForRowAtIndexPath:
以上所有情况都会触发scrollViewDidScroll:
但是
dragging
是 True 并且 decelerating
是 Falsedragging
是 False 而 decelerating
是 TruescrollForRowAtIndexPath:
dragging
是 False 并且 decelerating
是 False所以你的代码应该是这样的:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.dragging)
{
// Do what you want when user is dragging
} else if (scrollView.decelerating)
{
// Do what you want when table is decelerating after finished dragging
} else
{
// Do what you want when table is scrolling programmatically.
}
}
或者如果你只想以编程方式区分滚动
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.dragging || scrollView.decelerating)
{
// Scrolling by the user
} else
{
// Scrolling by the code
}
}
关于ios - UITableView scrollViewDidScroll 在动画上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777532/
我认为在 iPhone 开发方面有不错的经验。据我所知..我确实设置了委托(delegate)..我从上到下都有UIView --> UIScrollView--> UITextView 我尝试了一切
我的 View Controller 底部有一个按钮。当用户向下滚动时,按钮必须附加到特定高度的 ScrollView 。 我需要在 contentOffset.y 达到特定值时立即将按钮附加到 Sc
我通过修改 PullToRefresh 库在 scrollViewDidScroll 中触发了 UIView 动画。我想要的是在用户开始拉动时触发动画,并在拉动以刷新标题 View 离开屏幕时终止它。
我正在编写程序以在滚动 UITableView 时移动名为“myView”的 UIView,请看下图: “myView”会随着tableview的contentoffset的变化而改变它的'y坐标',
我在 tgat 中有一个 UIScrollView 我有一个 UITableView。我已经禁用了 UITableView 的滚动所以我只想检查我的 ScrollView 是否已经到达底部,如果调用加
我已经设置了 scrollView 委托(delegate)并将逻辑实现到 scrollViewDidScroll 协议(protocol)方法中,如下所示,它永远不会进入第二种情况。我想知道我错过了
我正在使用 Collection View 来查看我的 rss 提要数据。我正在使用 -(void)scrollViewDidScroll:(UIScrollView *)scrollView 来检测
我正在使用 https://github.com/xmartlabs/XLPagerTabStrip 它有 containerview,这是一个 scrollview,子 viewController
我有两个类:Foo 和 Bar: // Foo protocol FooDelegate { func scrollViewDidScroll(offset: CGFloat) } class
当一个人在删除一行或添加一行时使用 UITableViewRowAnimation 时,有时如果该行位于 TableView 的极端,则表会滚动。 然而,即使它滚动,它似乎也没有在委托(delegat
大家好(和圣诞快乐) 希望有人能回答我的问题,那将是一个美好的圣诞节 礼物。 我的 UIViewController 一个表,在表部分区域中有一个分段控件。看起来像这样 每次用户单击分段控件时,我都会
我有这个委托(delegate),它打算在用户用手指滚动时执行: -(void)scrollViewDidScroll:(UIScrollView *)scrollView 我有一行代码滚动到开头:
出于某种原因,当我尝试创建一个函数 scrollviewdidscroll 时,它只给我一个 void 选项。我已经导入了 scrollviewdelegate,并在 viewdidload 中将委托
当用户使用 scrollViewDidScroll 滚动时,我正在尝试向我的(自定义)导航栏添加阴影,但它没有执行任何操作。我在另一个 View Controller 上有完全相同的代码,但它有一个
我创建了第一个 View Controller “MainViewController”,并将带有导出 contentContainer 的容器 View 放入其中。 我创建了第二个 View Con
我尝试在滚动屏幕时获取触摸位置。我尝试从 touchBegin() 获取它,但我做不到。那是因为 touchBegin 在滚动过程中从未调用过。我怎么解决这个问题???快速回答我。 最佳答案 使用 S
我的应用程序出现奇怪的结果。当我按下后退按钮时,它总是调用 scrollViewDidScroll 并且它使我的应用程序崩溃。 如果我没有滚动到底部(只需加载 View 然后按下后退按钮),就不会发生
所以人们对这个特定事件的大部分问题是在动画发生时让 scrollViewDidScroll 触发。我的情况正好相反。我觉得 scrollViewDidScroll 不应该在我的情况下触发。 让我进一步
我正在尝试检查用户是否在我的应用上上下滚动,但它没有调用我的 scrollViewDidScroll 方法 当我在应用程序上上下滚动时,为什么它不打印 received scroll 有什么想法吗?
我在 View 中有一个 Scrollview。我想使用函数 scrollViewDidScroll 来检查和更新箭头(左右)。 - (void)scrollViewDidScroll:(UIScro
我是一名优秀的程序员,十分优秀!