受滚动和缩放等操作影响主线程无法阻塞

来源:互联网 发布:詹姆斯社交软件头像 编辑:程序博客网 时间:2024/06/07 05:01

问题描述:

最近开做苹果界面开发,需求是做个类似windows上的模态对话框。并且只有当界面关闭后,才能执行主线程代码并返回对话框操作结果值。

根据需求在静态方法中使用了CFRunLoopRun来阻塞主线程,显示VC视图,在VC类中声明虚函数控制试图关闭并调用CFRunLoopStop唤醒主线程执行。

原本代码能够正常运行,可是当VC中含有滚动视图时,问题就会出现。视图被用户手指滑动,那么我们阻塞的主线程就被唤醒啦。


解决方法:

后来我们只能在VC类中添加成员变量控制,如果是我们主动关闭那么将变量制为真,否则为假。显示VC的静态方法也需要修改一下,在CFRunLoopRun外层加个循环判断,如果变量为假则一直阻塞主线程,这样问题就解决啦。


希望我写的方法能对各位朋友提供帮助。

0 0