2013-03-22 51 views
0

我想補充this我的代碼添加實施的UIWebView(CustomScroll)

@implementation UIWebView(CustomScroll) 
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{ 
    [self.delegate scrollViewDidScroll: scrollView]; 
} 
@end 

但是,讓「沒有一個已知實例方法選擇‘scrollViewDidScroll:’」 缺少什麼我在這裏?

回答

3

UIWebViewDelegate協議未聲明方法scrollViewDidScroll:。因此,這就是爲什麼你會得到錯誤的訪問錯誤。

我建議你的子類UIWebView,而不是試圖創建一個類別(是的,文檔推薦反對子類...只是不覆蓋任何方法,它是安全的)。

在你的子類,你可以創建一個新的協議或簡單地覆蓋delegate屬性還要求它符合`UIScrollViewDelegate(後如下圖所示):

在示例:

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

@interface MyWebView : UIWebView 
@property (nonatomic, assign) id<UIWebViewDelegate, UIScrollViewDelegate> delegate; 
@end 


// MyWebView.m 
#import "MyWebView.h" 

@implementation MyWebView 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    /* As scrollViewDidScroll: is optional, you should check if the super class 
     responds to this method (it doesn't appear to now, but this may change in future) */ 

    if ([[self superclass] instancesRespondToSelector:@selector(scrollViewDidScroll:)]) 
    { 
     [super scrollViewDidScroll:scrollView]; 
    } 

    /* Likewise, you should check if your own delegate responds to this selector */ 

    if ([self.delegate respondsToSelector:@selector(scrollViewDidScroll:)]) 
    { 
     [self.delegate scrollViewDidScroll:scrollView]; 
    } 
} 

@end 
+1

任何提示如何做到這一點是歡迎:) – Segev 2013-03-22 00:07:19

+0

請參閱編輯的答案進一步澄清。讓我知道你是否仍然需要幫助。 :D – 2013-03-22 00:16:11

+0

感謝您的幫助。當我試圖滾動子類'UIWebView'我得到' - [MyWebView scrollViewDidScroll:]:無法識別的選擇發送到實例0x819cf50' – Segev 2013-03-22 01:02:14