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;
(Я тоже не вижу, чтобы меня уволили)
Что мне не хватает?
Ответы
Ответ 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;
}
это должно работать нормально,