正しく動くか確認はしていないのですが、UITextFieldでの入力中でしたら、swift - Detect backspace Event in UITextField - Stack Overflowに、デリゲートメソッド中でstringをC文字列に変換してバックスペースと比較する、というテクニックが紹介されていました。この方法は使えそうでしょうか?
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let char = string.cStringUsingEncoding(NSUTF8StringEncoding)!
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
println("Backspace was pressed")
}
return true
}
※strcmpの結果を文字の差として使うのは何となくイレギュラーな気もしますが、これは正当な方法なんでしょうかね?
[追記]
別回答者さんはSwift 3に合わせてcStringを使用していましたので、ご参考に引用いたします。
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let char = string.cString(using: String.Encoding.utf8)!
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
print("Backspace was pressed")
}
return true
}
また、さらに別の方はテキストフィールドが空の時でも検出できるよう、テキストフィールドに不可視の文字を詰めて空にならないよう対策されていました。
ただ、いずれも空のStringから値を取り出すようなトリッキーなことをされているようですので、単にstringが空かどうかだけで判定すれば事足りるのであれば、そちらの方がいいかもしれません。