你可以在不禁用其附加的UIGestureRecognizers的情况下禁用UIButton吗?

时间:2012-02-08 14:02:26

标签: iphone ios uibutton uigesturerecognizer

我有一个带有2个功能的UIButton:点按,然后长按。有点像Springboard应用程序(主屏幕)。我已经将它实现为UIButton并附带了UILongPressGestureRecognizer。

在某些情况下,我需要通过在我的按钮上设置enabled = NO来禁用点击操作。但不幸的是,这也禁用了我的手势识别器。

如何在保持手势识别器与其连接的同时禁用UIButton的标准行为?

2 个答案:

答案 0 :(得分:1)

您可以删除按钮点按目标和选择器,然后在需要时再次添加。通过设置enabled = NO;,您将控件接收器设置为NO。

更多文档 UIButton - Enabled

答案 1 :(得分:1)

UIButton是UIControl的子类。 看看UIControl中的各种方法 您可以指定调用ControlEvents的特定方法(例如ControlEventTouchUpInside a.k.a tap)和UIEvents。

 - (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event

 - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents

您可以使用以下命令删除控制事件的操作:

 - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

或者,根据您的条件,您可以在调用的目标/选择器方法中进行无操作。