首先说明一下 :
后台经常会给到我们这样的 JS 方法 :
app.exit
();
app.logout
();
save
(
cardno
);
等类似的方法
这类方法我们可以通过实现了 JSExport 协议来调用它;
首先创建 <NSObject> 类
.H 文件中写 :
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
//
首先创建一个实现了
JSExport
协议的协议
@protocol JSMutualDataProtocol <JSExport>
//
退出登录
-
(
void
)
logout
;
@end
//
退出登录协议
@protocol LogOutDelegate <NSObject>
-
(
void
)
logout
;
@end
@interface JSMutualData : NSObject<JSMutualDataProtocol>
@property
(
nonatomic
,
weak
)
id<LogOutDelegate>logOutDelegate
;
//
退出登录协议
@end
.M 文件写 :
//
退出登录
-
(
void
)
logout
{
[
_logOutDelegate logout
];
}
最后去 webView 控制器页面实现当前协议
签协议 <LogOutDelegate>
然后在
WebViewDidFinishLoad 方法中实现如下方法 :
//
首先创建
JSContext
对象(此处通过当前
webView
的键获取到
jscontext
)
JSContext *context=
[
webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"
];
//JS
方法,通过对象方法获取点击方法
JSMutualData *MutualData =
[[
JSMutualData alloc
]
init
];
context
[
@"app"
]
= MutualData
;
[
MutualData setLogOutDelegate:
(
id<LogOutDelegate>
)
self
];
最后实现类方法:
-(void)logout
{
NSLog(@"````````````logout");
}
save
(
cardno
);
方法如下:
- (void)WebViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"save('12345');"];
}
save ( cardno ); 方法赋值了,很好用
还有另外后台给的方法: app.onLogin(mm,bb);
通过JS方法获得mm , bb的值
还是上面那个方法一样的, 可以通过JSExport协议 得到值
//
退出登录
-
(
void
)
logout
;
换成下面这个方法:
//获取登录账号和密码
-(void)on:(NSString *)account Login:(NSString *)password;
.m文件写:
-(void)on:(NSString *)account Login:(NSString *)password
{
[_LoginDelegate on:account Login:password];
}
然后去webView控制器上面签协议,写方法就可以了