2016-12-06 89 views
-2

DeleteBackward()只刪除一個字符,有沒有辦法繼續向後刪除?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