2016-12-06 6 views
-2

DeleteBackward()は1文字だけを削除しますが、削除を続ける方法はありますか?DeleteBackward()Swift 3

私はemojiKeyboardを使用していますが、削除の絵文字があります。私は絵文字であること、削除絵文字を検出して、私は

if emoticon.isDelete{ 

     deleteBackward() 
     return 
    } 

更新呼び出し:

スティーブンのソリューションは、私UITextView上のボタンに動作しますが、ありません。理由を調べてみる。私はViewWillAppearとViewDidLoadでaddGestureRecognizerを試してみました。

+1

いつ削除を停止しますか?たとえば、誰かが削除絵文字を押すと、テキスト全体が削除されるか、またはユーザーが別のキーまたは顔文字を押したときに削除を停止する必要がありますか? – nitinsh99

+0

普通のキーボードの削除ボタンを複製したいと思います。したがって、ユーザーが解放するときに停止する必要があります – Marin

答えて

1

これは、あなたがテストをしなかったが、トリックを行う必要が開始する必要があります。

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

スティーブン、何らかの理由でUITextViewでトリガーされていない – Marin