Objective-C

183. (Objective-C/objc) [간단 소스] IOS WKWebView 웹뷰 화면 스크롤 이벤트 감지 - UIScrollViewDelegate Webview Scroll

투케이2K 2025. 2. 2. 13:03

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Objective-c

- 개발 툴 : Xcode

- 기술 구분 : Webview / Scroll / UIScrollViewDelegate

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

[1] : 사전 웹뷰 뷰컨트롤러에 딜리게이트 등록 : UIScrollViewDelegate

[2] : 웹뷰 속성 지정에서 스크롤 이벤트 감지 등록 : self.webView.scrollView.delegate = self  // 스크롤 이벤트 감지를 위해 delegate 설정

[3] : 전체 소스 코드 정의 : 

#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>

@interface WebViewController : UIViewController <WKNavigationDelegate, UIScrollViewDelegate>

@property (strong, nonatomic) WKWebView *webView; // [웹뷰 변수 정의]

@end

@implementation WebViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
    self.webView.navigationDelegate = self;
    self.webView.scrollView.delegate = self; // 스크롤 감지를 위해 delegate 설정 : UIScrollViewDelegate
    [self.view addSubview:self.webView];
    
    NSURL *url = [NSURL URLWithString:@"https://www.twok.com"]; // 웹뷰 로드 주소 정의
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; // NSURLRequest 정의
    [self.webView loadRequest:request]; // 웹뷰 로드 수행 실시
}

#pragma mark - UIScrollViewDelegate

// [스크롤 중 이벤트]
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"WebViewController :: 스크롤 중 :: %f", scrollView.contentOffset.y);
}

// [스크롤 시작 이벤트]
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    NSLog(@"WebViewController :: 스크롤 시작");
}

// [스크롤 멈춤 이벤트]
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"WebViewController :: 스크롤 멈춤");
}

@end

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Ios/Swift] A_Main - 웹뷰 로드 화면 관련 클래스 정리

https://blog.naver.com/kkh0977/222686770495

// --------------------------------------------------------------------------------------
 
반응형