2012-02-22 73 views
1

可能重复:
UIButton long press with finger stationary长按下按钮在IOS

我从代码创建了100个按钮。现在我想对长按钮进行响应。 对于每个按钮我叫enxt代码:

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

longPress方法不叫。

有人知道为什么吗?

+0

的':'在选择想'longPress'需要的参数。是这样吗?如果没有,请尝试构建正确的选择器,不要使用':'。当然,“自我”也必须对此作出回应。 – 2012-02-22 09:37:36

+0

这是我的方法的签名: - (void)longPress:(UILongPressGestureRecognizer *)手势。它适用于我添加recognaizer到我的视图,而不是按钮。但我需要使用自己在代码中创建的按钮。 – Radislav 2012-02-22 09:41:41

回答

2

很有可能UIButton已经使用手势识别器进行触摸处理。在长按自动识别器被允许看到触摸之前,轻击手势也很有可能成功,因此您的长时间触摸永远不会被调用。

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

+0

我曾尝试使用视图它适用于视图上的所有元素,但我只需要按钮。 – Radislav 2012-02-22 09:48:36

+0

你误会了我。我完全是在说使用视图而不是按钮。忘记使用按钮。让您的主视图带有100个子视图,其行为与按钮一样,只有您的长按手势。 – Jasarien 2012-02-22 15:21:52

+0

谢谢Jasarien;) – Radislav 2012-02-25 12:02:24

1

你可以看看这个效应初探到一个相关的问题:https://stackoverflow.com/a/6179591/536308

+0

我看到它和我的代码做同样的事情。不同的是我的按钮是从代码创建的。 – Radislav 2012-02-22 09:47:31

+0

其他手势(在超视图)设置? – 2012-02-22 10:11:11