Как поместить UIWebView в ячейку табличного представления и поддерживать ее полосы прокрутки?

StackOverflow https://stackoverflow.com/questions/443333

  •  22-07-2019
  •  | 
  •  

Вопрос

Как я могу поместить UIWebView в ячейку табличного представления, сохраняя при этом полосы прокрутки в UIWebView? В моем табличном представлении также есть несколько ячеек и кадр заголовка, и мне нужно, чтобы его можно было прокручивать, потому что в нем много строк.

Текст отображается отлично, когда я использую UITextView, и он также показывает скроллеры, но проблема в том, что мой контент представляет собой форматированный текст, поэтому у меня нет другого выбора, кроме как показать контент в UIWebView. Есть идеи, хаки?

Это было полезно?

Решение

Если Apple что-то не сделает, это не сработает. И UITableView, и UIWebView поддерживают скроллеры, и они противоречат друг другу. Скроллеры UITableView имеют преимущество, поэтому всякий раз, когда выполняется операция прокрутки, действие отправляется в UITableView вместо UIWebView.

По какой-то причине при использовании UITextView с UITableView скроллеры работают для обоих.

Другие советы

Проблема с добавлением UIWebView в ячейку таблицы состоит в том, что оба этих объекта можно прокручивать (просмотр таблицы и просмотр веб-страницы), что может создать сложности, если не будет использоваться надлежащим образом. У вас в tableview есть какие-либо клетки, кроме uiwebview? а вам нужно чтобы таблица была прокручиваемой Если просмотр таблицы не нуждается в прокрутке, включите прокрутку в веб-просмотре и отключите для просмотра таблицы. Это должно сработать.

Но если вы хотите просто отобразить текст, почему бы не использовать UITextView (хотя вы столкнетесь с той же проблемой и для UITextView)?

Я только что нашел это в документации UIWebView:

" Внимание! Не следует встраивать объекты UIWebView или UITableView в объекты UIScrollView. В этом случае может возникнуть непредвиденное поведение, поскольку события касания для двух объектов могут быть смешаны и неправильно обработаны. & Quot;

Полосы прокрутки добавляются автоматически, когда вы помещаете контент в UIWebView. Обязательно снимите флажок «Масштабировать страницу по размеру». в Интерфейсном конструкторе, поэтому страница не масштабируется при отображении.

UIWebView будет автоматически отображать полосы прокрутки, когда его содержимое превышает высоту UIView.

Вы можете поместить UIWebView в UIScrollView и иметь возможность их прокрутки, установив для свойства canCancelTouchEvents объекта UISCrollView значение NO . Если вы просто щелкнете, UIScrollView будет прокручиваться. Если вы удерживаете палец в течение короткого периода времени, а затем начинаете мигать, UIWebView будет прокручиваться.

Попробуйте этот быстрый взлом, чтобы увидеть, можете ли вы заставить веб-представление отображать индикатор прокрутки: ((UIScrollView *) [webView.subViews objectAtIndex: 0]). ShowsVerticalScrollIndicator = YES;

Более тщательный подход состоит в том, чтобы разделить содержимое вашей ячейки на сводку и детализацию. Показать резюме в каждой ячейке, но без подробностей. После выбора ячейки используйте новый экран, чтобы отобразить все содержимое выбранной ячейки. Это полностью исключает проблему удобства использования прокручиваемого представления внутри прокручиваемого представления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top