替换UIWebView中JS的Alert

写一个UIWebView的分类UIWebView+JavaScriptAlert

1.UIWebView+JavaScriptAlert.h

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

NS_ASSUME_NONNULL_BEGIN

@protocol JavaScriptAlertDelegate<NSObject>

@optional
- (void)webView:(UIWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message;

@end


@interface UIWebView (JavaScriptAlert)

- (void)webView:(UIWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString * _Nullable)message initiatedByFrame:(id _Nullable)frame;
- (void)setJSDelegate:(id)jsDelegate;

@end

NS_ASSUME_NONNULL_END

2.UIWebView+JavaScriptAlert.m

#import "UIWebView+JavaScriptAlert.h"
#import <objc/runtime.h>

const void *JSAlertDelegate = "JavaScriptAlertDelegate";

@implementation UIWebView(JavaScriptAlert)

- (void)webView:(UIWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame {
    
    [[self getJSDelegate] webView:webView runJavaScriptAlertPanelWithMessage:message];
}

- (void)setJSDelegate:(id<JavaScriptAlertDelegate>)jsDelegate {
    
    objc_setAssociatedObject(self, JSAlertDelegate, jsDelegate, OBJC_ASSOCIATION_ASSIGN);
}

- (id<JavaScriptAlertDelegate>)getJSDelegate {
    
    return objc_getAssociatedObject(self, JSAlertDelegate);
}

@end

3.实现位置

1.遵循代理<JavaScriptAlertDelegate>
2.设置代理[self.webView setJSDelegate:self];
3.实现代理方法
#pragma mark - JavaScriptAlertDelegate - NativeAlert替换JS的alert
-(void)webView:(UIWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message{
    
    UIAlertView *webAlert = [[UIAlertView alloc] initWithTitle:nil message:message delegate:self cancelButtonTitle:@"好的" otherButtonTitles:nil];
    [webAlert show];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、简介 近两年随着HTML5的迅速发展与日趋成熟,越来越多的移动开发者选择使用HTML5来进行混合开发,不仅节约...
    RainyGY阅读 5,902评论 1 12
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,201评论 2 7
  • 一、简介 近两年随着HTML5的迅速发展与日趋成熟,越来越多的移动开发者选择使用HTML5来进行混合开发,不...
    宝宝teacher阅读 6,923评论 3 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,036评论 25 709
  • IOS之UIWebView的使用 刚接触IOS开发1年多,现在对于 混合式 移动端开发越来越流行,因为开发成本上、...
    学无止境666阅读 45,958评论 5 53

友情链接更多精彩内容