Objective c 在IOS中长按按钮

Objective c 在IOS中长按按钮,objective-c,ios5,Objective C,Ios5,可能重复: 我已经从代码中创建了100个按钮。现在我想对长按按钮做出反应。 对于我称为enxt代码的每个按钮: UILongPressGestureRecognizer *longPressGesture = [[[UILongPressGestureRecognizer alloc] initWithTarget:self

可能重复:

我已经从代码中创建了100个按钮。现在我想对长按按钮做出反应。 对于我称为enxt代码的每个按钮:

UILongPressGestureRecognizer *longPressGesture = [[[UILongPressGestureRecognizer alloc]
                                                  initWithTarget:self
                                                  action:@selector(longPress:)]
                                                  autorelease];
[longPressGesture setMinimumPressDuration:1];
[button addGestureRecognizer:longPressGesture];
[self.view addSubview:button];
但未调用
longPress
方法


有人知道为什么吗?

很有可能,
UIButton
已经使用手势识别器来进行触摸操作。很可能在长时间点击识别器被允许看到触摸之前,点击手势就成功了,因此长时间点击永远不会被调用


我的建议是不要使用按钮,而是使用视图。您可以将长触摸手势识别器添加到视图中,并更改其外观行为,使其看起来和感觉像一个按钮,并能够保持长触摸。

您可以查看对相关问题的回答:

选择器中的
假设
长按
接受一个参数。是这样吗?如果没有,请尝试在不使用
的情况下构建正确的选择器。当然,
self
也必须响应它。这是我方法的签名:-(void)longPress:(uilongpressgestureignizer*)手势。如果我将重标记器添加到视图中,而不是添加到按钮中,它就会起作用。但是我需要在代码中使用我自己创建的按钮,我看到它和我的代码在做同样的事情。不同的是,我的按钮是根据代码创建的。是否设置了其他手势(在superview上)?我已尝试使用view。它适用于view上的所有元素,但我只需要按钮。你误解了我。我是说完全使用视图而不是按钮。忘记使用按钮吧。让主视图有100个子视图,它们的行为类似于按钮,只需长按手势即可。