J'ai deux boutons dans mon application. Je veux détecter le geste lorsque les deux boutons sont maintenus ensemble pendant au moins 3 secondes. Je sais peut détecter un seul geste de pression de bouton unique mais je veux appeler une seule fonction lorsque les deux boutons sont pressés & tenir ensemble pendant quelques secondes. Y a-t-il un moyen de le faire?Comment détecter deux boutons appuyez longuement sur le geste ensemble dans iOS?
Répondre
Vous pouvez utiliser ce code.
@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")
}
}
L'idée est de garder une référence à la fois les touches, puis utiliser un dispositif de reconnaissance à long geste sur ces boutons se connecter à une seule action. A l'intérieur de l'action, vous obtenez le bouton sur lequel le geste est fait et ensuite changer son tag à 1. Si le geste se termine ou est annulé alors il est mis à 0. Lorsque les deux boutons sont pressés, les deux boutons auront une étiquette Dans ce cas, vous saurez que les boutons ont été enfoncés pendant plus de 3 secondes. Notez que vous devez définir la durée minimum dans le storyboard et garder les points de vente sur les boutons.
Vous pouvez utiliser une condition différente à la place des étiquettes pour vérifier l'état de pression longue si nécessaire, mais la même idée peut être utilisée.
Dans 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");
}
}
double possible de http://stackoverflow.com/questions/9039115/two-button-simultaneous-press-input – Rishab
mais que diriez-vous geste de presse longue pendant 3 secondes – TechGuy
caisse http: //stackoverflow.com/questions/6882808/detect-key-press-on-virtual-keyboard – Rishab