2016-02-02 2 views
12

У меня есть веб-страницу для тестирования (https://storage.googleapis.com/htmltestingbucket/nested_scroll_helper.html), который просто выводит счетчик события прокрутки HTML-поймал в фиксированном заголовкеСВИФТ - HTML прокрутке события в WKWebView, что находится внутри ScrollView

Когда WKWebView является единственным прокручиваемым элементом во фрагменте, все отлично, и WebView отправляет события прокрутки на страницу

Если я хочу добавить собственные элементы выше и ниже WebView, тогда все становится намного сложнее.

UIScrollView 
    UILabel 
    WKWebView 
    UILabel 

Я знаю, что это не хорошо иметь WebView внутри ScrollView, но я должен обеспечить единый опыт скроллинг с гибридным контентом и собственно прокрутки событий в HTML-документе. Я нашел много вопросов по этому вопросу, но я не смог создать полное сквозное решение.

ответ

0

У вас в основном есть прокрутка в прокрутке. Как вы думаете, что это сработает? Я бы добавил метки в HTML в WebView. Не вижу причин, по которым они должны быть родными.

В качестве альтернативы вы можете попробовать добавить метки в UIScrollView UIWebView. Это первый взгляд. Не уверен, что вам нужно настроить вставки scrollview. Инъекция html, вероятно, будет работать более надежно.

3

Обновление: Хорошо, я понял, что вы пытаетесь сделать.

Я знаю, что вы хотите сохранить внешний scrollView, но я уверен, что достичь того, что вы хотите сделать, невозможно, только если вы установили outerScrollView.delegate = webView - но не работали для меня, когда Я попробовал)

Я думаю, что лучшим решением было бы:

  1. удалить ваш внешний Scrollview
  2. Установите contentInsets для вашего WebView на любой высоте на верхней и нижней части вам нужно. Например. для 100pt: webView.contentInset = UIEdgeInsetsMake(100,0,100,0);
  3. Добавьте UiElements, как подвид вашему UIWebView вместо UIScrollView (в основном в свободное пространство, созданный с contentInsets)

Ранее (наоборот):

  1. настроить ограничение высоты вашего UIWebView
  2. магазин высота ограничение в IBOutlet в вашем UIViewContro Мюллером
  3. установить webView.scrollView.scrollEnabled = NO; в вашем viewDidLoad или раскадровке
  4. как только будет загружена WebView, извлечь его высоту содержимого webView.scrollView.contentSize.height
  5. обновления высоты UIWebView ограничение со значением этого s content height via self.webViewContentHeightConstraint.constant = webView.scrollView.contentSize.height
  6. call [сам.scrollView layoutIfNeeded]; чтобы убедиться, что ваше мнение визуализируется снова

Не забудьте сделать шаги 4 & 5 каждый раз, когда Webview сделал содержание догружать

enter image description here

+0

Но как WebView будет знать о свитках? – Luda

+0

Это не потому, что вы больше не прокручиваете веб-просмотр. У вас будет только одно прокручиваемое представление, которое «перемещает» веб-просмотр. Таким образом, у вас есть идеальное одиночное прокручивание – MarkHim

+0

Я вас понимаю, но это то, что мы ищем. Мне нужно, чтобы веб-просмотр знал о прокрутке, прокручивая его – Luda

Смежные вопросы