检测何时按下自定义 UIButton
Posted
技术标签:
【中文标题】检测何时按下自定义 UIButton【英文标题】:Detecting when a custom UIButton has been pressed 【发布时间】:2011-10-26 21:32:14 【问题描述】:我为我的应用程序创建了一个自定义 UIButton(UIButton 子类)。在这个按钮的实现中,当它被按下时我将如何改变背景颜色? (郁闷时应该恢复正常背景。我目前正在使用Core Graphics绘制渐变背景。)
我尝试在drawRect:
中进行分支(检查self.selected
和self.highlighted
,但没有发生任何变化,因为在触摸事件上没有调用drawRect
。
感谢任何建议或代码示例。
【问题讨论】:
【参考方案1】:尝试在您的触摸事件中调用[self setNeedsRedraw]
。
Asker 提供了基于此答案和以下 cmets 的解决方案。
解决方案
使用:
[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel];
选择器是执行背景更改的自定义函数。
【讨论】:
我需要在按钮的实现中捕获这个触摸事件,以便设置它的背景颜色。 您可以随时将自己添加为自己的触摸事件的侦听器。试试[self addTarget: self action: @selector(setNeedsRedraw) forControlEvents: UIControlEventTouchDown];
谢谢。在self
上使用addTarget
有效。我在您的答案中添加了我的实际解决方案。以上是关于检测何时按下自定义 UIButton的主要内容,如果未能解决你的问题,请参考以下文章
当按下自定义按钮时,UILabel 不会更新(Objective-C)
如何将自定义 UIControl 中按下的 UIButton 传递给我的视图控制器?