我有一个包含UIScrollView的应用程序,其Paging = YES并带有以下测试代码:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
sleep(1);
}
如果用户在此1秒睡眠期间执行多次滑动,则在释放主线程后执行所有滑动事件 - 产生“狂野”效果。
是否有办法在执行此阻止工作时禁用触摸/滑动(当然理想的是不在此处阻止主线程,但并非总是可行!)。
我试图用setUserInteraction = NO / YES
和setScrollingEnabled = NO / YES
包裹“睡眠”,但没有任何运气。
答案 0 :(得分:0)
我的朋友在想要在指定时间段内执行操作后禁用点击时遇到此问题。你想要做的是利用NSObject的performSelector:withObject:afterDelay:method。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
userInteractionEnabled = NO;
[self performSelector:@selector(enableUserInteraction) withObject:nil afterDelay: 1];
}
- (void)enableUserInteraction {
userInteractionEnabled = YES;
}
这很粗糙,因为我可能没有正确的语法,但您应该能够遵循这一点,并且您可以在任何您认为合适的地方使用它。禁用用户交互,然后设置一个计时器事件来调用函数以在指定的时间段后重新启用它。