2012-11-05 16 views
0

UIWebView的子類受Apple限制。但是,我需要更換方法canPerformAction下列之一:如何替換UIWebView的方法而不是限制子類?

-(BOOL) canPerformAction:(SEL)action withSender:(id)sender { 
    if ((action == @selector(Copy:)) || (action == @selector(Paste:))) { 
     return YES; 
    } else { 
     return NO; 
    } 
} 

如何更換這種方法沒有子?非常感謝您的幫助!

回答

0

要替換類中的函數,可以使用方法調整。有一個不錯的圖書館可以爲您做所有事情,名字爲JRSwizzle

[[UIWebView class] jr_swizzleMethod:@selector(canPerformAction:withSender:) withMethod:@selector(myCanPerformAction:withSender:) error:nil]; 

的所有你需要做的就是創建一個實現myCanPerformAction:withSender:

-(BOOL) myCanPerformAction:(SEL)action withSender:(id)sender { 
    if ((action == @selector(Copy:)) || (action == @selector(Paste:))) { 
     return YES; 
    } else { 
     return NO; 
    } 
} 

不知道這是很好的做法,雖然在UIWebView的類別...

+0

完美!謝謝! – Dmitry

+0

替換的方法可以很好地工作,但在UIWebView的彈出式菜單上仍然存在令人討厭的項目:((http://stackoverflow.com/questions/13233613/how-to-disable-popup-menu-items-like-select-select -all-suggest-define-on – Dmitry

+0

jjv360,但是如何在新的內部執行被替換的方法現在呢??? – Dmitry

相關問題