如果你试试
[self.view performSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:YES] afterDelay:2];
在 64位 iPhone上(即使在模拟器上),用户交互也将被禁用。无论以前的状态如何。
但是,此行适用于 32位 iPhone。
这是操作系统中的错误吗?我想念什么吗?
最佳答案
setUserInteractionEnabled:
需要BOOL
参数,但您正在向其发送NSNumber
。您的代码在32位环境中只是偶然地工作,但是
[self.view performSelector:@selector(setUserInteractionEnabled:) withObject:[NSNumber numberWithBool:NO] afterDelay:2];
即使在32位(我测试过)时也不会将属性重置为
NO
,所以它确实不是真的工作。
解决此问题的最简单方法是使用GCD:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.view.userInteractionEnabled = YES;
});