我想模仿UIScrollView行为,当你拖动scrollView时当前线程RunLoop模式更改为UITrackingRunLoopMode,并在停止拖动时返回NSDefaultRunLoopMode。
我想用我自己的班级来做,但拖着视图......现在我正在使用这段代码
while (_draggingView && [[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]]);
当我停止拖动时,_draggingView更改为nil,因此我停止在该模式下循环。是否有更优雅/更好的方式来做到这一点?
UIScrollView是如何做到的?输入源?
谢谢
答案 0 :(得分:3)
您可以使用CFRunLoopStop
强制运行循环返回。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
CFRunLoopStop(CFRunLoopGetMain());
}
答案 1 :(得分:-1)
您可以使用 Decelerated 方法。
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
拖动滚动视图后,它开始减速,因此,这些方法对您有用。