当前位置:  开发笔记 > IOS > 正文

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

如何解决《iOSUIButton-UIButtonsetUserInteractionEnabled和setEnabled之间的区别》经验,为你挑选了1个好方法。

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

问题:
在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];
    }
}

所以我没有看到setEnabled方法和setUserInteractionEnabled方法之间的巨大差异.它们的行为类似于阻止用户不使用它的单一方法.但是,如果是相同的一样,我们怎么可能能够检测isEnabled truefalse即使setUserInteractionEnabled被设置为False

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

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

正如@danh所说,

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

danh.. 13

它们几乎相同.userInteractionEnabledUIView切换视图是否接收任何用户触摸的属性. enabledUIControl(的子类UIView和超类的子类UIButton)的属性,具有相同的效果.一个区别是UIKit控件可能会根据它们的enabled状态而有所不同,这与摘要不同UIView.

好的,那为什么呢?

由于UIControl子类继承了两者,为什么有两个几乎相同的属性?为什么不控制只是放弃"启用"的想法,并根据他们的userInteractionEnabled状态不同地绘制自己?

至少有一个原因是在动画期间,UIViews 上禁用了用户交互.控件在动画时将自己画成灰色是错误的.所以至少在动画期间,这两个属性具有不同的含义.



1> danh..:

它们几乎相同.userInteractionEnabledUIView切换视图是否接收任何用户触摸的属性. enabledUIControl(的子类UIView和超类的子类UIButton)的属性,具有相同的效果.一个区别是UIKit控件可能会根据它们的enabled状态而有所不同,这与摘要不同UIView.

好的,那为什么呢?

由于UIControl子类继承了两者,为什么有两个几乎相同的属性?为什么不控制只是放弃"启用"的想法,并根据他们的userInteractionEnabled状态不同地绘制自己?

至少有一个原因是在动画期间,UIViews 上禁用了用户交互.控件在动画时将自己画成灰色是错误的.所以至少在动画期间,这两个属性具有不同的含义.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有