UIControl 中的控件状态如何工作?
Posted
技术标签:
【中文标题】UIControl 中的控件状态如何工作?【英文标题】:How does the control state work in UIControl? 【发布时间】:2013-07-10 14:16:13 【问题描述】:我正在开发一个使用 UIButton 的 ios 项目。我使用了[cardButton setTitle:card.contents forState:UIControlStateSelected|UIControlStateDisabled];
,但我并不完全了解机制。我知道这是 emun 和位掩码过程。任何人都可以向我解释一下吗?谢谢。
enum
UIControlStateNormal = 0,
UIControlStateHighlighted = 1 << 0,
UIControlStateDisabled = 1 << 1,
UIControlStateSelected = 1 << 2,
UIControlStateApplication = 0x00FF0000,
UIControlStateReserved = 0xFF000000
;
【问题讨论】:
【参考方案1】:一个控件可以有more than one states at a time 例如。 selected 和 highlight 可以共存,依此类推。
因此,您可以为状态组合指定标题和图像。
例如。
UIButton * button;
//initialization code
NSString * title = @"Title";
[button setTitle:title forState:UIControlStateHighlighted | UIControlStateSelected];
title = [button titleForState:UIControlStateHighlighted | UIControlStateSelected];
位掩码用于为每个值组合生成唯一值 - 使用按位或尝试它们,您会得到它。它与能够支付任何整数金额的 1 美元、2 美元、5 美元、10 美元等纸币并没有太大的不同,例如1美元和2美元的钞票可以用来支付3美元、4美元等等,所以你只需要确定数量的钞票。
【讨论】:
所以,forState:UIControlStateHighlighted | UIControlStateSelected 表示为突出显示和选择设置内容。而状态的唯一性就是他们使用位掩码的原因,对吧?以上是关于UIControl 中的控件状态如何工作?的主要内容,如果未能解决你的问题,请参考以下文章
UIControl 子类正在接收“touchesCancelled”而不是“touchesEnded”