检测自定义UIButton被按下的时刻

8
我已经为我的应用程序创建了一个自定义UIButton(UIButton子类)。在这个按钮的实现中,当按下按钮时,我该如何改变其背景颜色?(当释放按钮时,它应该恢复到正常的背景颜色。我目前正在使用Core Graphics来绘制渐变背景。)
我尝试在`drawRect:`中进行分支处理(检查`self.selected`和`self.highlighted`),但没有任何变化发生,因为`drawRect`未被调用。
欢迎提出任何建议或代码示例。
1个回答

15

在你的触摸事件中尝试调用[self setNeedsRedraw]


提问者根据此答案和下面的评论提供了一种解决方案。

解决方案

使用:

[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel];

选择器是自定义函数,用于执行背景更改。


我需要在按钮的实现中捕获此触摸事件,以便设置其背景颜色。 - Evan Mulawski
2
你可以随时将自己添加为触摸事件的监听器。尝试使用 [self addTarget:self action:@selector(setNeedsRedraw) forControlEvents:UIControlEventTouchDown]; - Micah Hainline
1
谢谢。在self上使用addTarget起作用了。我将我的实际解决方案添加到了你的答案中。 - Evan Mulawski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接