ios - iOS:setupSelector的setUserInteractionEnabled在64位上不起作用

标签 ios 64-bit user-interaction performselector

如果你试试

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

关于ios - iOS:setupSelector的setUserInteractionEnabled在64位上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22848151/

相关文章:

ios - 无法将NSDictionary添加到NSArray

javascript - 在 Javascript 中检测 IE8 64 位

C# 适用于 32 位但不适用于 64 位

wpf - WPF 中的 SelectionChanged 事件是否只能针对用户交互进行处理?

Jquery 检测所有 dom 事件调用和用户交互

objective-c - Objective-C : How to disable user interaction to all of tab bars except one?

ios - Swift:检测 UITextField 中的 iOS 键盘文本替换

ios - 为什么我的代码没有删除字符串的空格?

iphone - ScrollView 中的砌体布局

Python 在 64 位 Vista 上获得 os.environ ["ProgramFiles"] 的错误值