ios – 设置当前线程NSRunLoop在一定模式下运行的正确方法是什么,直到我决定停止它?

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

我想用自己的课程来做,但是,拖动着看法…现在我正在使用这个代码

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

当我停止拖动时,_draggingView更改为nil,所以我停止循环在该模式.有更优雅/更好的方法吗?

UIScrollView如何做?输入源?

谢谢

解决方法

您可以使用 CFRunLoopStop强制运行循环返回.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    CFRunLoopStop(CFRunLoopGetMain());
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...