2017-09-04 6 views
0

J'ai un UITableView et je voudrais faire un UIAlertView pour apparaître sur un UILongPressGestureRecognizer.Comment faire un UIAlertView apparaît avant le décollage du doigt dans swift 3?

Cela fonctionne bien maintenant, c'est que je dois lever le doigt de l'écran pour le voir apparaître.

Existe-t-il un moyen de le faire apparaître après 0,5 s (par exemple) même si le doigt est toujours à l'écran? À la propriété du UILongPressGestureRecognizer?

EDIT:

class Settings: UIViewController , UITableViewDataSource, UITableViewDelegate { 
override func viewDidLoad() { 
    super.viewDidLoad() 

    let longPress = UILongPressGestureRecognizer(target: self, action: #selector(Settings.deleteItem)) 
    self.tableView.addGestureRecognizer(longPress) 
} 

func deleteItem(longPress:UIGestureRecognizer) { 
    if longPress.state == UIGestureRecognizerState.ended { 
     let pressedLocation = longPress.location(in: self.tableView) 
     if let pressedIndexPath = tableView.indexPathForRow(at: pressedLocation) { //Give the row where it's touched 

      RowSelected = (actionList?[pressedIndexPath[1]])! 
      print(RowSelected) 
      longtouched = pressedIndexPath[1] 
      let alert = UIAlertController(title: "What do you want to do?", message: "Select the action you want to do.", preferredStyle: UIAlertControllerStyle.alert) 

      let Cancel = UIAlertAction(title: "Cancel", style: .default) { actio in 
       print("Canceled") 
      } 


      let Delete = UIAlertAction(title: "Delete", style: .default) { actio in 
       //DOING MY STUFF 

      } 

      let Modify = UIAlertAction(title: "Modify", style: .default) { actio in 
       UserDefaults.standard.set(self.longtouched, forKey: "modify") 
       self.performSegue(withIdentifier: "ToModify", sender: self) 
      } 
      alert.addAction(Modify) 
      alert.addAction(Delete) 
      alert.addAction(Cancel) 
      self.present(alert, animated: true, completion: nil) 
     } 
    } 
} 
+0

@ Anbu.Karthik: Juste fait, mais je suppose que j'ai compris mon problème. Juste a dû changer 'si longPress.state == UIGestureRecognizerState.ended' à' si longPress.state == UIGestureRecognizerState.began' et il a fait l'affaire. Je suppose que les yeux du lundi matin m'aident à voir qu'après des heures de recherche dans mon code:/ Merci quand même. – Hawkydoky

+0

thats tous mes bro congrtz –

+0

Voulez-vous dire d'afficher l'alerte 0.5s après le geste de presse long déclenche son sélecteur? – thxou

Répondre

0

En fait, je l'ai vu le problème moi-même.

Si quelqu'un est confronté au même problème, juste changé if longPress.state == UIGestureRecognizerState.ended à if longPress.state == UIGestureRecognizerState.began Il fera l'affaire.