相关疑难解决方法(0)

iOS UIButton - UIButton setUserInteractionEnabled和setEnabled之间的区别

等等!!!:
我知道你可能会认为这个问题已经被问过几次了.但我可以向你保证,这个问题是独一无二的.

问题:
在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 truefalse即使setUserInteractionEnabled被设置为False

以下是使这个问题不能与SO中的另一个Q&A线程重复的原因:

  • 尽管一些排名很高的代码可能会将我的问题标记为可能重复,但问答并没有给我正确的理解.
  • 正如@danh所说,

    至少有一个原因是在动画期间,UIViews上禁用了用户交互.控件在动画时将自己画成灰色是错误的.所以至少在动画期间,这两个属性具有不同的含义.给我真正的答案或原因,看出这两种方法有两个原因.因为任何人都可以说setUserInteractionEnabled不会对UI状态进行更改,但至少只有在@ danh的回答中首先声明它可能会在UI动画中隐式使用.

objective-c uibutton ios isenabled setuserinteractionenabled

10
推荐指数
1
解决办法
1280
查看次数