我加 UILongPressGestureRecognizer
给几个 UIButton
使用代码:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(btnLong:)];
[btnOne addGestureRecognizer:longPress]; //there are btnTwo, btnThree for example
当我长按一个按钮时,该方法被调用:
-(void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer{
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
}
}
我的问题是,我怎么知道是哪个
UILongPressGestureRecognizer
被触发,因为 UILongPressGestureRecognizer
没有标签属性.
最佳答案
给每个按钮一个唯一的标签号。然后在您的操作方法中,您可以执行以下操作:
-(void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer{
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
UIView *view = gestureRecognizer.view;
if (view.tag == 1) { // first button's tag
// process 1st button
} else if (view.tag == 2) { // second button's tag
// process 2nd button
}
}
}
另一种选择,如果每个按钮都有 socket ,您可以执行以下操作:
-(void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer{
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
UIView *view = gestureRecognizer.view;
if (view == self.firstButton) {
// process 1st button
} else if (view == self.secondButton) {
// process 2nd button
}
}
}
在哪里
firstButton
和 secondButton
是您的按钮属性。是的,使用 ==
适合检查手势的 View 是否是按钮之一,因为您确实是要比较对象指针。
关于ios - 要知道哪个 UILongPressGestureRecognizer 被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518590/