我想UIButton禁用用户触摸.双方setEnabled并setUserInteractionEnabled能做到这一点.哪个更好?他们有什么不同?
等等!!!:
我知道你可能会认为这个问题已经被问过几次了.但我可以向你保证,这个问题是独一无二的.
问题:
在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
我正在为iPhone和iPad的通用应用程序构建自定义GUI.在iPad上,它主要依赖于"sideViews"等实用程序,如内容操作,detailInformation等(想想一个高级的SplitView).从视觉的角度来看,新的UIPresentationController让我能够呈现这些"sideViews"(并且不使用dimmedView),并且实现起来非常简单,可以构建和维护,同时仍然可以很好地与故事板集成.但是,当presentViewController可见时,我需要能够操作presentViewController的内容.所以我的问题是,我可以在呈现sideViews时在presentViewController上设置userInteractionEnabled(或类似)吗?