Подтвердить что ты не робот

UITextView отключение выбора текста

Возможный дубликат:
Как отключить Копировать, Вырезать, Выбрать, Выбрать все в UITextView

Мне сложно с UITextView отключить выбор текста.

Я пробовал:

canCancelContentTouches = YES;

Я пробовал подклассы и перезапись:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender   

(Но это вызвано только после выбора)

- (BOOL)touchesShouldCancelInContentView:(UIView *)view;  

(Я не вижу, чтобы меня уволили)

- (BOOL)touchesShouldBegin:(NSSet *)touches
                 withEvent:(UIEvent *)event
             inContentView:(UIView *)view; 

(Я тоже не вижу, чтобы меня уволили)

Что мне не хватает?

4b9b3361

Ответ 1

Проблема Как отключить Копировать, Вырезать, Выбрать, Выбрать все в UITextView, это выполнимое решение, которое я только что внедрил и проверил:

Подкласс UITextView и перезаписать canBecomeFirstResponder:

- (BOOL)canBecomeFirstResponder {
    return NO;
}

Обратите внимание, что это отключает ссылки и другое отображаемое текстовое содержимое.

Ответ 2

Я обнаружил, что вызов

[textView setUserInteractionEnabled:NO];

работает достаточно хорошо.

Ответ 3

Похоже на то, что вы на самом деле хотите, это гигантский UILabel внутри UIScrollView, а не UITextView.

update: если вы используете новые версии iOS UILabel теперь имеет свойство lines:

Несколько строк текста в UILabel

Ответ 4

UITextView selectable свойство:

Это свойство управляет способностью пользователя выбирать контент и взаимодействовать с URL-адресами и текстовыми вложениями. Значение по умолчанию: YES.

Ответ 5

Если вы просто хотите предотвратить его редактирование, установите для свойства UITextView "editable" значение NO/False.

Если вы пытаетесь оставить его редактируемым, но не выбираемым, это будет сложно. Возможно, вам нужно будет создать скрытый текст, который пользователь может ввести, а затем UITextView будет наблюдать это скрытое текстовое представление и заполнить текст textview.

Ответ 6

Вы пытались настроить userInteractionEnabled на NO для своего UITextView? Но вы тоже потеряете прокрутку.

Если вам нужна прокрутка, вероятно, вы использовали UITextView, а не UILabel, тогда вам нужно сделать больше работы. Вероятно, вам придется переопределить canPerformAction:withSender:, чтобы вернуть NO для действий, которые вы не хотите разрешать:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    switch (action) {
        case @selector(paste:):
        case @selector(copy:):
        case @selector(cut:):
        case @selector(cut:):
        case @selector(select:):
        case @selector(selectAll:):
        return NO;
    }
    return [super canPerformAction:action withSender:sender];
}

Для более UIResponderStandardEditActions.

Ответ 7

Для этого первого подкласса UITextView

и в реализации выполните следующие

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
{
    self.selectable = NO;
}

- (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event
{
        self.selectable = YES;
 }

это должно работать нормально,