我的应用程序中有两个按钮。我想在两个按钮保持在一起至少3秒时检测手势。我知道可以检测单按钮长按手势,但我想在按下按钮时调用单个功能。抱在一起几秒钟。反正有吗?
答案 0 :(得分:0)
您可以使用此代码。
@IBAction func longPress(gesture:UILongPressGestureRecognizer) {
let view = gesture.view!
print("state = \(gesture.state.rawValue)")
if gesture.state != UIGestureRecognizerState.Ended && gesture.state != UIGestureRecognizerState.Cancelled {
view.tag = 1
} else {
view.tag = 0
}
if button1.tag == 1 && button2.tag == 1 {
print("pressed both buttons for 3 seconds")
} else {
print("not pressed both buttons for 3 seconds")
}
}
我们的想法是保留对这两个按钮的引用,然后在这些按钮上使用长手势识别器连接到单个动作。在操作中,您将获得完成手势的按钮,然后将其标记更改为1.如果手势结束或取消,则将其设置为0.当按下两个按钮时,两个按钮的标记均为1在这种情况下,您将知道按钮已被按下超过3秒。请注意,您必须在故事板中设置最小持续时间并保持按钮的出口。
如果需要,您可以使用不同的条件而不是标签来检查长按状态,但可以使用相同的想法。
在ObjC
-(IBAction)longPress:(UILongPressGestureRecognizer*) gesture {
UIButton* button = (UIButton*)gesture.view;
if (gesture.state != UIGestureRecognizerStateEnded && gesture.state != UIGestureRecognizerStateCancelled)
{
button.tag = 1;
} else {
button.tag = 0;
}
if (button1.tag == 1 && button2.tag == 1) {
NSLog(@"pressed both buttons for 3 seconds");
} else {
NSLog(@"not pressed both buttons for 3 seconds");
}
}