검색결과 리스트
webview에 해당되는 글 1건
- 2012.12.06 WebView에서 맨 아래로 스크롤되었는지 확인
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
사용자가 WebView에서 스크롤을 맨 아래로 했는지 여부를 판단하기 위해 아래와 같이 작업해야 한다.
yPosition = [[webview stringByEvaluatingJavaScriptFromString:@"scrollY"] intValue]; offsetHeight = [[webview stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] intValue]; frameHeight = webview.frame.size.height; if(offsetHeight - yPosition <= frameHeight) { // 스크롤이 맨 밑으로 이동됨 }}
UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizeralloc] initWithTarget:self action:@selector(handleSwipeUp:)];
@interface TestViewController : UIViewController <UIGestureRecognizerDelegate>
{
IBOutlet TestWebView *webview;
}
@implementation TestViewController
- (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:self
action:@selector(dummyHandle:)];
tap.delegate = self; [webviewaddGestureRecognizer:tap];}
- (void)dummyHandle:(UITapGestureRecognizer *)recognizer
{
// webview의 touch를 감지
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{ int yPosition = 0; int offsetHeight = 0; int frameHeight = 0;yPosition = [[webview stringByEvaluatingJavaScriptFromString:@"scrollY"] intValue]; offsetHeight = [[webview stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] intValue]; frameHeight = webview.frame.size.height; if(offsetHeight - yPosition <= frameHeight) { // 스크롤이 맨 밑으로 이동됨 }}
@end
위의 방식으로 처리하니 bottom체크를 여러번 하는 결과가 나오는데 아무래도 이벤트 방식이라서 Began, Changed, Ended를 처리하지 않아서인지 tap방식이 여러번 발생하는 태생적 결과인지 모르겠다. 여러번 체크하여 앱에 오동작을 유발하거나 버벅거림을 느낄 수 있어 좀 더 Smooth한 결과를 위해 아래와 같이 변경하였다.
swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
swipeUp.delegate = self;
- (void)handleSwipeUp:(UISwipeGestureRecognizer *)sender
[webview.scrollViewaddGestureRecognizer:swipeUp];
{
CGFloat scrollHeight = mWebView.scrollView.contentSize.height - mWebView.bounds.size.height;
if(scrollHeight < 0.0f)
scrollHeight = 0.0f;
if(scrollHeight <= webview.scrollView.contentOffset.y + 50)
{
NSLog(@"bottom");
}
else
{
NSLog(@"not bottom");
}
}
'-- iOS (iPhone)' 카테고리의 다른 글
Could not instantiate class named NSLayoutConstraint (0) | 2012.12.11 |
---|---|
이미지 사이즈 지정하기 (0) | 2012.12.06 |
Custom URL 지정 (0) | 2012.12.06 |
UIColor를 RGB로 입력하기 (0) | 2012.12.06 |
Automatic Reference Counting과 -fno-objc-arc (0) | 2012.12.06 |
RECENT COMMENT