Как проверить/вызвать метод, когда пользователь находится в нижней части UIWebView при прокрутке? Я хочу, чтобы всплывающее окно (добавить subiview), когда пользователь находится в нижней части содержимого.проверить, если UIWebView прокручивается до нижней части
ответ
Сначала получите ссылку на UIWebView Scrollview с помощью этого свойства:
@property(nonatomic, readonly, retain) UIScrollView *scrollView
После того, как вы получите ссылку на него можно было проверить на contentSize его и сравнить его с contentOffSet. Вы не можете сделать его делегатом, поскольку UIWebView уже является делегатом для scrollView, но этот трюк должен работать.
Проблема в том, что вы не получаете callBack, когда прокрутка происходит ... так что вам нужно будет проверять каждый так часто. В противном случае вам придется сделать себя делегатом scrollView и реализовать все методы, которые UIWebView реализует и имитирует это поведение, а затем проверить на это условие didScroll
.
Другим вариантом является введение некоторого JavaScript в веб-представление, а затем использование события window.onscroll в JavaScript для обнаружения, когда пользователь прокручивается в нижней части окна (вы можете найти множество примеров в Интернете, если обнаруживаете прокрутку события с использованием JS).
Как только вы обнаружите, что пользователь находится внизу, вы можете вернуться к приложению, загрузив поддельный URL-адрес в веб-представление из JavaScript, указав document.location.href = "http: // madeupcallbackurl", затем используйте делегат веб-представления, чтобы перехватить этот запрос и выполнить свою собственную логику кода.
Использование делегата scrollview, вероятно, проще, хотя если вы можете сделать эту работу!
Извините, я думал UITableView. Вы спрашиваете о UIWebView. Я не знаю, будет ли это работать с UIWebView.
У меня есть код, который делает это с помощью UIScrollViewDelegate.
@interface myViewController : UIViewController_iPad <UIScrollViewDelegate> {
UITableView *myTableView;
...
}
- (void)viewDidLoad {
myTableView.delegate = self;
...
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// If necessary, verify this scrollview is your table:
// if (scrollView == myTableView) {
CGPoint offset = myTableView.contentOffset;
if (myTableView.contentSize.height - offset.y >= myTableView.bounds.size.height)
{
// The table scrolled to the bottom. Do your stuff...
}
// }
}
Извините, я думал UITableView. Вы спрашиваете о UIWebView. Я сделал это для UITableView, но не для UIWebView. Вы можете попробовать заменить UIWebView для UITableView выше и посмотреть, работает ли он. – jimmyg
Опираясь на другие идеи здесь, UIWebView
соответствует протоколу UIScrollViewDelegate
. Вы можете подклассифицировать UIWebView
и переопределить соответствующие методы UIScrollViewDelegate
, вызвав [super ...]
, чтобы исходное поведение все еще присутствовало.
@interface SpecialWebview : UIWebView
@end
@implementation SpecialWebview
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[super scrollViewDidScroll:scrollView];
// Check scroll position and handle events as needed...
}
@end
Вот как бы я это сделал.
UIWebView
соответствует UIScrollViewDelegate
. Используйте - (void)scrollViewDidScroll:(UIScrollView *)scrollView
функцию обратного вызова, чтобы отслеживать, когда ваш UIWebView
прокрутки:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//The webview is is scrolling
int xPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollX"] intValue];
int yPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollY"] intValue];
}
Теперь этот метод будет вызываться всякий раз, когда ваши Webview свитки.Ваш WebView будет прокручиваться на дно, когда:
webView_content_height - webView(y) = webView.frame.height; //pseudo code
Делегат обратного вызова будет выглядеть так:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//The webview is is scrolling
int xPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollX"] intValue];
int yPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollY"] intValue];
if([webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] - yPosition == webView.frame.height)
{
//The user scrolled to the bottom of the webview
}
}
Что код переводится в том, что, когда пользователь прокручивает на дно от содержания, разница между y-позицией webView (которая является y-координатой верхнего левого угла webView), а нижняя часть содержимого будет равна высоте кадра веб-просмотра. Код действует при выполнении этого условия, чтобы войти в состояние if
.
Чтобы быть в безопасности, вы можете изменить условие if
, чтобы иметь погрешность (возможно, + или - 10 пикселей).
- 1. UIWebView не прокручивается до нижней
- 2. UIWebView не прокручивается до нижней части веб-страницы, загруженной/созданной
- 3. обнаруживает, когда textarea прокручивается до нижней части
- 4. Директива VueJS вычисляет, если div прокручивается до нижней части
- 5. Как проверить, прокручивается ли прокрутка до нижней ступени андроида
- 6. Ящик чата всегда прокручивается до нижней части последней строки чата
- 7. UIScrollView не прокручивается в нижней части экрана
- 8. Загрузите iframe, если пользователь прокрутил до нижней части
- 9. Загрузка страницы прокручивается к нижней части
- 10. JTable не прокручивается до нижней строки
- 11. Выравнивание до нижней части ли?
- 12. Scrollview всегда прокручивается до нижней границы
- 13. Android RecyclerView scrollToPosition не прокручивается в нижней части окна
- 14. Почему UIWebView не прокручивается правильно?
- 15. Как определить, прокручивается ли пользователь в нижней части UITableView?
- 16. Как проверить, прокручивается ли пользователь в нижней части элемента управления WebBrowser в .NET?
- 17. Проверьте, не прокручивается ли пользователь в нижней части страницы
- 18. Прокрутка к нижней части div
- 19. Android ScrollView автоматически прокручивается в нижней части окна
- 20. Сохранение нижнего колонтитула до нижней части (css)
- 21. Одна страница Checkout прокручивается в нижней части экрана в следующем
- 22. WordPress прокручивается до конца
- 23. вызывать функцию, когда пользователь прокручивается в нижней части страницы
- 24. SparkDataContainer Scroller не прокручивается в нижней части контейнера
- 25. Что такое браузерный способ проверить, прокручивается ли пользователь в нижней части страницы?
- 26. Как добраться до нижней части выражения AST
- 27. Получить направление UIWebView прокручивается
- 28. UIWebView не прокручивается
- 29. UIWebView не прокручивается
- 30. Android slide LinearLayout до внутренней нижней нижней части
Если у вас есть ссылка на scrollview, не можете ли вы, чтобы ваш контроллер просмотра был делегатом для scrollview, а затем отправил все события прокрутки? –