检测何时按下自定义 UIButton

Posted

技术标签:

【中文标题】检测何时按下自定义 UIButton【英文标题】:Detecting when a custom UIButton has been pressed 【发布时间】:2011-10-26 21:32:14 【问题描述】:

我为我的应用程序创建了一个自定义 UIButton(UIButton 子类)。在这个按钮的实现中,当它被按下时我将如何改变背景颜色? (郁闷时应该恢复正常背景。我目前正在使用Core Graphics绘制渐变背景。)

我尝试在drawRect: 中进行分支(检查self.selectedself.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的主要内容,如果未能解决你的问题,请参考以下文章

IOS:按下时不要改变颜色UIButton

XCTestCase:无法在导航栏中按下自定义栏按钮

当按下自定义按钮时,UILabel 不会更新(Objective-C)

如何将自定义 UIControl 中按下的 UIButton 传递给我的视图控制器?

在使用自定义 UITableViewCell 时检测 UIButton

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟