2016-12-06 3 views
-2

DeleteBackward() supprime un seul caractère, est-il possible de continuer à supprimer en arrière? J'utilise emojiKeyboard et j'ai une émoticône de suppression. Je perçois la emoji étant la suppression émoticône et j'appelleDeletebackward() Swift 3

if emoticon.isDelete{ 

     deleteBackward() 
     return 
    } 

Mise à jour:

solution de Steven fonctionne sur les boutons, mais pas sur mon UITextView. Je vais essayer de trouver pourquoi. J'ai essayé d'avoir le addGestureRecognizer dans ViewWillAppear ainsi que ViewDidLoad.

+1

Quand voulez-vous que la suppression s'arrête? Par exemple, lorsque quelqu'un appuie sur l'émoticône de suppression, le texte entier doit-il être supprimé ou doit-il cesser de supprimer lorsque l'utilisateur appuie sur une autre touche ou émoticône? – nitinsh99

+0

Je suppose que je veux reproduire le bouton de suppression du clavier normal. Donc ça devrait s'arrêter quand les utilisateurs sortiront – Marin

Répondre

1

Cela devrait vous aider à démarrer, n'a pas testé mais devrait faire l'affaire.

fileprivate var timer = Timer() 
fileprivate var textField = UITextField() //change to your field 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPress(_:))) 
    textField.addGestureRecognizer(longPress) 
} 


func longPress(_ guesture: UILongPressGestureRecognizer) { 
    if guesture.state == UIGestureRecognizerState.began { 
     longPressBegun(guesture) 
    } else if guesture.state == UIGestureRecognizerState.changed { 
     //longPressStateChanged(guesture) 
    } else if guesture.state == UIGestureRecognizerState.ended { 
     longPressEnded() 
    } else if guesture.state == UIGestureRecognizerState.cancelled { 
     longPressCancelled() 
    } 
} 

func longPressBegun(_ guesture: UILongPressGestureRecognizer) { 
    timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(repeatAction), userInfo: nil, repeats: true) 
} 

func longPressEnded() { 
    timer.invalidate() 
} 

func longPressCancelled() { 
    timer.invalidate() 
} 

func repeatAction() { 
    deleteBackward() 
} 
+1

Merci Steven, pour une raison quelconque ce n'est pas déclenché sur un UITextView – Marin