Отключение "Определить" в UITextField

У меня есть UITextField, который отображает только числовые значения (0-9,., -). Когда пользователь выбирает содержимое текстового поля, появляется меню с надписью "copy", "paste" и "define". Поскольку текстовое поле отображает только числовые значения, я не хочу, чтобы отображалась опция "define". Как отключить опцию "определение" словаря в UITextField?

Изменить: Я решил это и разместил решение ниже

Ответ 1

Swift - iOS 8

Вы можете сделать это путем подкласса UITextField и переопределения метода canPerformAction:WithSender.

class MyTextFieldWithoutDefine: UITextField {
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        if action == "_define:" {
            return false
        }

        return super.canPerformAction(action, withSender: sender)
    }
}

Список всех действий:

cut:
copy:
select:
selectAll:
paste:
delete:
_promptForReplace:
_transliterateChinese:
_showTextStyleOptions:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
makeTextWritingDirectionRightToLeft:
makeTextWritingDirectionLeftToRight:

Ответ 2

решение в области комментариев вопроса не работает для меня (ios8), я получил ошибку:

action == @selector(defineSelection:)

i удалось удалить "define" из меню редактирования, указав параметры, которые я хотел включить в меню:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(copy:) ||
        action == @selector(selectAll:)) {
        return true;
    }

    return false;
}

более полный ответ: Как отключить опцию копирования пасты из UITextField программно (спасибо serge-k)

Ответ 3

Если вы используете NIB, установите для параметра "Исправление" UITextField значение "НЕТ" (значение по умолчанию - "ДА" ).

Если вы используете код, установите "autocorrectionType" как "UITextAutocorrectionTypeNO".

Ответ 4

Попробуйте следующее:

UITextField* textField = //...;
textField.autocorrectionType = UITextAutocorrectionTypeNo;