有什么区别:
myBarButtonItem.enabled = NO;
和
myBarButtonItem.userInteractionEnabled = NO;
每次按钮都变成灰色吗?
答案 0 :(得分:12)
从apple文档中,uibarbuttonitem没有userInteractionEnabled属性。因为它继承自UIBarItem类引用,所以它也没有userInteractionEnabled属性。
如果您使用此行myBarButtonItem.userInteractionEnabled = NO;
您的应用会崩溃。
如果你不想按下按钮,请使用: - myBarButtonItem.enabled = NO;
另请参阅Apple文档。
对于常规按钮: -
myButton.userInteractionEnabled = NO;将不会对您的图像图像产生任何影响,也无法按下它。
myButton.enabled = NO;会导致阴影出现在按钮图像上,也无法按下它。
答案 1 :(得分:5)
我阅读了文档,这是我的发现。
UIButton
继承自UIControl
布尔属性enabled
确定的布尔值 接收器是否已启用。
指定YES以进行控制 启用;否则,请指定NO 它被禁用了。默认值为YES。 如果启用状态为NO,则 控制忽略触摸事件和 子类可能会有不同的描述。
UIControl
继承自UIView
布尔属性userInteractionEnabled
:
确定的布尔值 是否忽略用户事件 从事件队列中删除。
设置为NO时,用户事件 - 例如 触摸和键盘 - 用于 视图被忽略并从中删除 事件队列。设置为YES时,事件 正常交付到视图。 默认值为YES。
从此我得出结论
button.userInteractionEnabled = NO
表示该按钮看起来正常但不响应触摸(来自UIView
继承)。
button.enabled = NO
表示该按钮显示为灰色且不响应触摸(来自UIControl
继承)。
答案 2 :(得分:1)
UIBarButtonItem
没有名为userInteractionEnabled
的属性,只有UIView
且它的子类具有该属性。
所以,简而言之,
myBarButtonItem.userInteractionEnabled = NO;
不会使按钮变灰,它会使程序崩溃。
将enabled
属性设置为NO
,将灰显按钮。