Полностью отключить «возврат» при нажатии Swift - PullRequest
0 голосов
/ 06 июня 2019

Я работаю над приложением, в котором пользователь должен иметь возможность печатать «вперед», но не может удалить ничего (например, вернуться назад и отредактировать), которое уже было набрано.

Есть несколько ответов, примерно то, что я хочу:

как обрабатывать возврат в uitextfield - это старая версия Swift, я думаю, так как после этого у меня появилось много ошибок (не рекомендуется, отсутствуют аргументы и т. д.).Когда я пытался это сделать, я думал о том, чтобы сделать что-то вроде следующего:

func disableBackspace() {

//do a check to see if the range of characters has reduced
if range of characters in the string reduces (<0?) {

//if it has then don't allow the 'character' to be typed
return false 
}
}

Так что мне тогда понравился внешний вид этого метода:

хочу узнать время когда нажимаю накнопка возврата на клавиатуре при редактировании текстового поля ios

Итак, я попытался:

func textView(_ textView: UITextView, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

//meant to detect if character was a backspace
let char = string.cString(using: String.Encoding.utf8)
let isBackSpace: Int = Int(strcmp(char, "\u{8}"))
if isBackSpace == -8 {
    print("Backspace was pressed")
}
//meant to return false to not allow the backspace
        return false
}

И сделал мой VC делегатом textView, выполнив

override func viewDidLoad() {
    self.textViewOutlet.delegate = self

    super.viewDidLoad()
}

, но этоне работалОн ничего не печатает и все же позволяет пользователю вернуться на задний план.

Любые идеи высоко ценятся!

Ответы [ 2 ]

2 голосов
/ 06 июня 2019

Вам нужно просто реализовать textView(_:shouldChangeTextIn:replacementText:) и проверить на empty replacementText.

Пустой замещающий текст == нажата клавиша возврата

Если text равно Empty 1 return false . Else вернуть true`.

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if text.isEmpty {
        return false
    }
    return true
}
0 голосов
/ 06 июня 2019

Используйте следующий код:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    let  char = text.cString(using: String.Encoding.utf8)!
    let isBackSpace = strcmp(char, "\\b")

    if (isBackSpace == -92) {
        return false
    }
    return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...