Tài liệu iOS cho biết rằng lớp UIWebView phù hợp với UIScrollViewDelegate. Nhưng một cá thể UIWebView không gọi phương thức scrollViewDidScroll
của bộ điều khiển của nó. Đại biểu được đặt ngay bên phảiTại sao một cá thể UIWebView không gọi scrollViewDidScroll?
[webView setDelegate:self];
và webViewDidFinishLoad
được gọi thành công. Bộ điều khiển thực hiện cả hai đại biểu, UIWebViewDelegate và UIScrollViewDelegate, như thế này:
@interface WebviewController : UIViewController<UIWebViewDelegate, UIScrollViewDelegate>{
UIWebView *webView;
}
Duyệt SO dẫn đến category solution rằng:
@implementation UIWebView(CustomScroll)
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
[self.delegate scrollViewDidScroll: scrollView];
}
@end
Đó loại phương pháp thực hiện về cơ bản giống nhau: Việc gọi method scrollViewDidScroll của đại biểu. Vậy tại sao cách tiếp cận đầu tiên không hoạt động?
làm bạn đặt đại biểu cho scrollView? 'webView.scrollView.delegate = self'? – pawelropa
Không, tôi đã không làm vậy. Và vâng, nó hoạt động! – alex
Vì vậy, một cá thể 'UIWebView' đặt ủy nhiệm' scrollViews' của nó cho cá thể đó theo mặc định? Có vẻ như ... Nếu không, cách tiếp cận danh mục sẽ không hoạt động. – alex