10

我想模仿 UIScrollView 行为,当您拖动 scrollView 时,当前线程 RunLoop 模式更改为 UITrackingRunLoopMode,并在您停止拖动时返回 NSDefaultRunLoopMode。

不过,我想用我自己的课程来做这件事,在视图中拖动......现在我正在使用这段代码

while (_draggingView && [[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]]);

当我停止拖动时,_draggingView 变为 nil,因此我停止在该模式下循环。有没有更优雅/更好的方法来做到这一点?

UIScrollView 是如何做到的?输入源?

谢谢

4

2 回答 2

4

您可以使用CFRunLoopStop来强制运行循环返回。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    CFRunLoopStop(CFRunLoopGetMain());
}
于 2012-05-31T18:08:41.583 回答
-1

您可以使用减速方法。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

在我们拖动滚动视图后,它开始减速,所以,这些方法可能对你有用。

于 2012-05-29T12:13:16.450 回答