我有一个UIButton,它针对两个不同的控制事件有两个动作:UIControlEventTouchDown
和UIControlEventTouchUpInside
。
如果UIControlEventTouchUpInside
触发的操作检测到需要此操作,是否可以“阻止”绑定到UIControlEventTouchDown
的操作?
我无法更改属于UIControlEventTouchUpInside
- 操作的代码,因为它是私有框架的一部分,所以我必须找到另一种方法来帮助我自己......
答案 0 :(得分:1)
使UIControlEventTouchUpInside
事件依赖于布尔变量(在if语句中)。但是,您已收到通知
由UIControlEventTouchDown触发的操作检测到这是必需的
使用此通知设置变量。
答案 1 :(得分:1)
如果您希望UIControlEventTouchDown
无法触发UIControlEvenTouchUpInside
,则可以在按钮上为该事件设置不同的(可能为空)操作,或者只删除该操作。保持选择器引用或只知道它应该触发的其他操作的方法名称,如果要触发它,请重置它:
if ( buttonUsedDownAction )
{
[button removeTarget:(self?) action:@selector(yourPrivateFunction) forControlEvents:UIControlEventTouchUpInside];
}
else
{
if ( [button actionsForTarget:(self?) forControlEvent:UIControlEventTouchUpInside].length == 0 )
{
[button addTarget:(self?) action:@selector(yourPrivateFunction) forControlEvents:UIControlEventTouchUpInside];
}
}
我把(self?)
作为目标,因为我不确定自己是否是Touch up inside动作的接收者,但你应该明白这个想法