等等!!!:
我知道你可能会认为这个问题已经被问过几次了.但我可以向你保证,这个问题是独一无二的.
问题:
在iOS应用程序中,想象一下有两个按钮,如下图所示,它们有两个动作就像一个切换逻辑.
它的逻辑可能如下:
- (IBAction)testBtnClicked:(id)sender {
if ([self.testBtn isEnabled]) {
[self.testBtn setEnabled:NO];
[self.setInteractionBtn setUserInteractionEnabled:YES];
} else {
[self.testBtn setEnabled:YES];
[self.setInteractionBtn setUserInteractionEnabled:NO];
}
}
- (IBAction)setInteractionBtnClicked:(id)sender {
if ([self.setInteractionBtn isEnabled]) {
[self.setInteractionBtn setUserInteractionEnabled:NO];
[self.testBtn setEnabled:YES];
} else {
[self.setInteractionBtn setUserInteractionEnabled:YES];
[self.testBtn setEnabled:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
所以我没有看到setEnabled方法和setUserInteractionEnabled方法之间的巨大差异.它们的行为类似于阻止用户不使用它的单一方法.但是,如果是相同的一样,我们怎么可能能够检测isEnabled true或false即使setUserInteractionEnabled被设置为False?
以下是使这个问题不能与SO中的另一个Q&A线程重复的原因:
至少有一个原因是在动画期间,UIViews上禁用了用户交互.控件在动画时将自己画成灰色是错误的.所以至少在动画期间,这两个属性具有不同的含义.给我真正的答案或原因,看出这两种方法有两个原因.因为任何人都可以说
setUserInteractionEnabled不会对UI状态进行更改,但至少只有在@ danh的回答中首先声明它可能会在UI动画中隐式使用.
objective-c uibutton ios isenabled setuserinteractionenabled