Update:
я провел дальнейшие эксперименты и, как выясняется, я ошиблась о решении рабочего для UIWebView
. Я проверил его, но не выглядел достаточно близко, я думаю. После размышления над комментариями мата и повторного чтения «решения», которое я нашел/упомянул, я заметил, что они не говорили о веб-просмотрах. С тех пор я взломал решение, которое встраивает мой UIWebView
внутри моего собственного UIScrollView
. Затем я отключу «прокрутку» UIWebView
, установив размер и размер содержимого на весь HTML-документ. Этот подход должен работать либо для UIWebView
, либо для WKWebView
. Как только я очищу решение, я вернусь и обновлю.Limit прокручивать область в пределах содержания WKWebView
Оригинал:
Я разрабатываю приложение IOS, которая имеет WKWebView
для чтения содержимого HTML. Иногда мне нужно иметь возможность ограничивать прокрутку в определенной части веб-контента. Например, скажем, что веб-контент составляет 10 000 точек по вертикали, и я хочу ограничить прокрутку между 5000 и 8000. Я всегда показываю всю ширину.
Я нашел это решение для UIWebView
: https://stackoverflow.com/a/3973649
Решение предлагает установив webview.scrollView.contentSize
как:
CGSize desiredContentSize = CGSizeMake(self.webView.scrollView.contentSize.width,
8000-5000);
self.webView.scrollView.contentSize = desiredContentSize;
и регулируя происхождение webview.scrollView.frame
«с до -5000;
CGRect scrollFrame;
scrollFrame.origin = CGPointMake(0, -5000);
scrollFrame.size = self.webView.frame.size;
self.webView.scrollView.frame = scrollFrame;
Я нашел, что это хорошо работает с он не работает с UIWebView
, ноWKWebView
. С WKWebView
, я замечаю, что contentSize scrollView автоматически сбрасывается, чтобы соответствовать содержимому каждый раз, когда пользователь прокручивает страницу или когда JavaScript обновляет содержимое. Это не произошло с UIWebView
.
я обнаружил, что могу «силы» нужный мне contentSize на «палки» с этим решением: https://stackoverflow.com/a/8214325/3352624
К сожалению, это вызывает испуг, когда я попал в верхней и нижней части видимой области. Использование этого подхода KVO заключается в том, как я заметил, что WKWebView
постоянно перезагружает его contentSize.
Как можно прокрутить область WKWebView
? Есть ли хороший способ предотвратить изменение ContentSize?
Для чего это, в данном случае, содержимое HTML контролируется контентом из внутреннего API. Единственный запуск javascript - мой собственный. Я нацелен на iOS 8 и 9.
Поскольку это ваш контент и ваш JavaScript, почему бы вам не сделать это правильно и просто удалить часть содержимого, которое вы не хотите видеть у пользователя? – matt
@matt Хорошая точка. Границы, которые я размещаю, окружают, предлагая ежедневные чтения. У меня есть еще одно требование разрешить пользователю передавать эти границы с расширенным жестом тяги. Материал за пределами границы должен быть видимым во время этого жеста. Если они вытянут достаточно далеко, я перемещу границы в следующий раздел. Во-вторых, я использую rangy javascript-библиотеку для выделения, и я уверен, что это испортит сериализацию. – davew
Хороший ответ. Но моя точка зрения остается: вы станете намного более счастливым кемпером, если вы реализуете эту функцию с помощью css-and-javascript и не пытаетесь подорвать сам веб-просмотр. Это просто взгляд, и он не настроен на то, что вы пытаетесь сделать. – matt