我正在尝试创建某种时间轴视图,如视频编辑器:连续的媒体元素,这些是UIView的.我可以使用UIScrollView触摸事件(如touchesBegan和touchesMoved)将这些视图成功拖动到滚动视图的当前可见部分内.我想在子视图拖动到其中一个滚动视图边缘时滚动滚动视图.我现在能想到的最好的方法是创建一个定时器,当用户用手指靠近滚动视图边缘保持子视图时,该定时器将滚动视图.
这里有很多关于同一主题的问题,但是我无法找到一个涵盖滚动的问题.
有没有办法做到这一点?我应该使用手势识别器吗?
先感谢您.
解决方法
实际上你想要的是一个定时事件.很快,当用户位于滚动视图的边缘时,您启动一个计时器,它会定期增加contentOffset.如果你不喜欢你的动画结果(我猜你正在使用setContentOffset:animated:?),那就试试另一个动画的时间和距离..我想你必须尝试一些不同的设置.我首先尝试的是一次1px.也许每0.3秒?
如果这不起作用,你也可以尝试另一个“极端”.当用户到达边缘时,启动单个动画,动画化contentOffset直到contentSize结束.但是在很长的时间内,运动速度很慢.如果用户停止拖动或移出边缘,请在当前位置停止动画.这甚至可以是没有计时器的解决方案,因为动画将是你的计时器本身.