스크롤 할 때 사용자가 UIWebView의 맨 아래에있을 때 메소드를 확인/호출하는 방법은 무엇입니까? 사용자가 콘텐츠의 맨 아래에있을 때 뷰를 팝업 (하위 뷰 추가)하고 싶습니다.UIWebView가 맨 아래로 스크롤되는지 확인하십시오.
답변
먼저이 속성을 사용하여있는 UIWebView있는 ScrollView에 대한 참조를 얻을 :
@property(nonatomic, readonly, retain) UIScrollView *scrollView
을 당신이에 대한 참조하면 그것의 contentSize 확인하고 contentOffSet과 비교 수를 일단. UIWebView는 이미 scrollView의 위임자이므로 스스로 위임 할 수는 없지만 그 트릭이 작동해야합니다.
문제는 스크롤이 발생하면 콜백을받지 못하기 때문에 모든 항목을 자주 확인해야한다는 것입니다. 그렇지 않으면 자신을 scrollView의 대리자로 만들고 UIWebView가 구현하는 모든 메서드를 구현하고 해당 동작을 모방 한 다음 didScroll
에서 해당 조건을 확인하십시오.
또 다른 옵션은 웹보기에 일부 자바 스크립트를 삽입 한 다음 자바 스크립트에서 window.onscroll 이벤트를 사용하여 사용자가 창 하단으로 스크롤했을 때를 감지하는 것입니다. 스크롤을 감지하면 많은 예제를 온라인에서 찾을 수 있습니다 JS를 사용하는 이벤트).
사용자가 맨 아래에 있음을 감지하면 JavaScript의 웹보기에서 가짜 URL을 document.location.href = "http : // madeupcallbackurl"이라고 말하면서 앱에 다시 전화 할 수 있습니다. 그런 다음 웹보기 위임자를 사용하여 요청을 차단하고 네이티브 코드 논리를 수행하십시오.
당신이 그 일을 할 수 있다면 스크롤 위임을 사용하는 것이 더 쉽습니다!
죄송합니다, 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에 대해서는 수행하지 않았습니다. 위의 UITableView UIWebView 대체 시도하고 작동하는지 볼 수 있습니다. – 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
을 준수합니다. 당신의 UIWebView
스크롤 할 때의 추적 할 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
콜백을 사용
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//The webview is is scrolling
int xPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollX"] intValue];
int yPosition = [[webView stringByEvaluatingJavaScriptFromString: @"scrollY"] intValue];
}
지금이 방법은 때마다 웹보기 스크롤을 호출됩니다.
이
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
}
}
입니다 때 하단에 사용자가 스크롤 콘텐츠의 경우 WebView의 y 위치 (WebView의 왼쪽 위 모퉁이의 y 좌표)와 콘텐츠의 아래쪽 사이의 차이는 webview 프레임의 높이와 같습니다. 이 코드는 if
조건에 들어가기 위해 만족되는이 조건에 따라 작동합니다.
안전을 기하기 위해 if
조건을 수정하여 오차 범위 (어쩌면 + 또는 - 10 픽셀)를 가질 수 있습니다.
- 1. div의 맨 아래로 스크롤
- 2. require.js를 페이지 맨 위나 맨 아래로 이동해야합니까?
- 3. Scrollview는 항상 맨 아래로 스크롤합니다.
- 4. spark.components.Application의 ControlBar를 맨 아래로 이동하십시오.
- 5. div의 맨 아래로 자동 스크롤
- 6. div를 페이지 맨 아래로 내림
- 7. div의 콘텐츠 맨 아래로 스크롤
- 8. UITableView가 맨 아래로 스크롤되지 않습니다.
- 9. UINavigationController 스택 맨 위의 UIWebView가 표시되지 않습니다.
- 10. UIWebView가로드/생성 된 웹 페이지의 맨 아래로 스크롤되지 않습니다.
- 11. ExtJs 어떻게 그리드의 맨 아래로 스크롤합니까?
- 12. SparkDataContainer Scroller가 컨테이너의 맨 아래로 스크롤하지 않습니다.
- 13. 창은 맨 아래로 스크롤됩니다. Wordpress 세부 페이지
- 14. 기본적으로 NSComboBox 목록이 맨 아래로 스크롤됩니다.
- 15. viewFliper를 사용하여 맨 아래로 슬라이드하는 방법은 무엇입니까?
- 16. JTextPane에서 내용을 맨 아래로 스크롤하는 방법은 무엇입니까?
- 17. 백본보기를 렌더링 한 후 맨 아래로 스크롤
- 18. 웹 사이트 HTML 화면 맨 아래로 자르기
- 19. 열을 항상 페이지 맨 아래로 늘리려면 어떻게합니까?
- 20. IFrame은 내 페이지를 페이지의 맨 아래로 스크롤합니다.
- 21. WPF 스크롤 뷰가 맨 아래로 스크롤
- 22. 문자열을 Crystal Reports의 맨 아래로 정렬하려면 어떻게합니까?
- 23. 이미지가 때때로 IE의 페이지 맨 아래로 떨어짐
- 24. jQuery 애니메이션으로 스크롤 이벤트를 맨 아래로 스크롤
- 25. ScrollView에서 페이지가 스크롤되는지 여부를 감지하는 방법은 무엇입니까?
- 26. 웹 페이지의 맨 아래로 스크롤 할 수 없음 (Windows의 WebKit)
- 27. JQuery가 맨 아래로 자동 스크롤합니다 (그러나 mousescrolling에서는 사용 불가능합니다)
- 28. 보기의 맨 위에있을 때 UIScrollView가 일시적으로 아래로 스크롤되지 않게하는 방법
- 29. Graphviz : 노드를 맨 아래로 강제로 이동시키는 방법이 있습니까?
- 30. 축소하면 배경 이미지 표시를 맨 아래로 가져올 수 있습니까?
scrollview에 대한 참조가있는 경우보기 컨트롤러를 scrollview의 위임자로 설정 한 다음 모든 스크롤 이벤트를받을 수 없습니까? –