Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 检测何时按下自定义按钮_Iphone_Ios_Cocoa Touch_Uibutton_Subclass - Fatal编程技术网

Iphone 检测何时按下自定义按钮

Iphone 检测何时按下自定义按钮,iphone,ios,cocoa-touch,uibutton,subclass,Iphone,Ios,Cocoa Touch,Uibutton,Subclass,我已经为我的应用程序创建了一个自定义UIButton(UIButton子类)。在这个按钮的实现中,当按下它时,我将如何改变背景色?(按下时应该恢复为正常背景。我目前正在使用核心图形绘制渐变背景。) 我已尝试在drawRect:(检查self.selected和self.highlighted)中进行分支,但没有发生任何更改,因为触摸事件中没有调用drawRect 任何建议或代码示例都将不胜感激。请尝试在您的触摸事件中致电[self-SetNeedsDraw] Asker根据这个答案和下面的评论

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

我已尝试在
drawRect:
(检查
self.selected
self.highlighted
)中进行分支,但没有发生任何更改,因为触摸事件中没有调用
drawRect


任何建议或代码示例都将不胜感激。

请尝试在您的触摸事件中致电
[self-SetNeedsDraw]


Asker根据这个答案和下面的评论提供了一个解决方案

解决方案

使用:


其中选择器是执行背景更改的自定义函数。

我需要在按钮的实现中捕获此触摸事件,以便设置其背景颜色。您可以始终将自己作为侦听器添加到自己的触摸事件中。请尝试
[self addTarget:self action:@selector(SetNeedsDraw)forControlEvents:UIControlEventTouchDown];
谢谢。在
self
上使用
addTarget
有效。我将实际解决方案添加到您的答案中。
[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel];