setUserInteractionEnabled

setUserInteractionEnabled

如果你试试

 [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;
});

07-24 09:24