Я получаю интересное предупреждение во время изготовления (средство моделирования iPhone), который дает следующее:
EditView.xib:35:0 UITextView does not support data detectors when the text view is editable.
Это является в основном не существующим на Google, и я хотел бы удалить его.
Мой editview.xib имеет textview, где я пишу записки в него. Есть ли еще информация, которая необходима?
Я тоже видел это предупреждение. Вот как я это исправил:
В xib файле в Interface Builder выберите текстовый вид и вызовите инспектор атрибутов. Убедитесь, что "Обнаруживает номера телефонов" и "Обнаруживает ссылки" являются UNCHECKED.
Я проверил "Обнаруживает связи", и оказалось, что именно это и было причиной предупреждения. В основном, если текстовый просмотр редактируемый, вы не хотите, чтобы эти функции автоматического обнаружения были включены.
Детекторы данных для UITExtView будут для копирования и вставки. Поскольку вы устанавливаете его как редактируемые, копия / паста не допускается, где вы думаете, что должна быть, но копия не должна.
У меня есть четыре разных Xib с похожими TextView, которые также используются для заметок. Я получал такие же предупреждения. Предложение отключить «Обнаружение телефонных номеров» и «Обнаружение ссылок» действительно удаляет предупреждения. Однако я хотел, чтобы у моих пользователей по-прежнему была возможность использовать детекторы в моих заметках.
Вот как я решил проблему в моем приложении:
В IB: я отменил выбор двух свойств для TextView. - (который останавливает предупреждения сборки).
В моем - (void) viewDidLoad {
я установил следующие свойства textView:
myTextView.dataDetectorTypes = UIDataDetectorTypeAll;
, который включает детекторы данных всех типов (номера телефонов и url-адреса).
В моем контроллере представления: - (void) textViewDidBeginEditing: (UITextView *) sender {
метод, я выключил детекторы данных OFF , используя: myTextView.dataDetectorTypes = UIDataDetectorTypeNone
Затем, воспользовавшись методом - (void) textViewDidEndEditing: (UITextView *) sender {
, я снова включил ON using: myTextView.dataDetectorTypes = UIDataDetectorTypeAll;
Этот метод отключает детекторы данных, когда пользователь редактирует UITextView, и снова включает детекторы данных, когда пользователь заканчивает редактирование. Это исправление позволило выбрать телефонные номера и URL-адрес из textView, так что я не потерял эту функцию.
В документации Apple по DataDetectors для UITextView я обнаружил следующее: после некоторого эксперимента с UITextView, надеюсь, это поможет.
Определяет типы информации, которая может быть обнаружена в текстовом содержимом.
Дополнительное примечание: Детекторы данных не разрешены, если UITextView имеет значение «Редактируемый», потому что было бы слишком много переменных для отслеживания изменений текста пользователями, как а также касания при попытке выполнить телефонный звонок или ссылки.
Решение:
Загрузите TextView с помощью self.textView.editable = NO;
и установите UIDataDetector на основе перечисленных выше типов. Таким образом, если пользователь хочет «выбрать» веб-адрес или номер телефона и т. Д., Делегат сможет справиться. Если вам нужно, чтобы ваш пользователь отредактировал textView, включите self.textView.editing = YES;
и соответственно удалите UIDataDetectors. Это должно гарантировать отсутствие ошибок или предупреждений во время компиляции.
Особое внимание: Обязательно сначала удалите детекторы данных при повторном включении, затем включите "редактирование = ДА;" ... Порядок важен: нет, чтобы разрешить редактирование, если детекторы UIdata все еще назначены .
Следовательно, порядок следования должен быть примерно таким ...
Для редактирования textView: 1. удалить детекторы данных, 2. затем разрешить редактирование = ДА.
Использование DataDetectors: 1. Отключить редактирование = НЕТ; 2. затем добавьте детекторы данных.