iOS开发 网页中的alert/contirm 点击方法未执行
2017-04-12 20:19
162 查看
问题:
项目中“积分模块”用的是大麦城网页,在交互过程中网页中的confirm(ios对应alerview)点击未执行js代码。
解决:
最终找到这个代码片段,新建Category类方法,将一下代码写入。
扩展:
可修改alert、confirm风格,也常见于网页中的提示框未拉起。
@interface UIWebView (JavaScriptAlert)
-(void) webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;
- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;
@end
@implementation UIWebView (JavaScriptAlert)
/**
alert */
- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:@"助手提示" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[customAlert show];
}
static BOOL diagStat = NO;
static NSInteger bIdx = -1;
/** contirm */
- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
UIAlertView *confirmDiag = [[UIAlertView alloc] initWithTitle:@"助手提示"
message:message
delegate:self
cancelButtonTitle:@"取消"
otherButtonTitles:@"确定", nil nil];
[confirmDiag show];
bIdx = -1;
while (bIdx==-1) {
//[NSThread sleepForTimeInterval:0.2];
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
}
if (bIdx == 0){//取消;
diagStat = NO;
}else if (bIdx == 1) {//确定;
diagStat = YES;
}
return diagStat;
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
bIdx = buttonIndex;
}
@end
项目中“积分模块”用的是大麦城网页,在交互过程中网页中的confirm(ios对应alerview)点击未执行js代码。
解决:
最终找到这个代码片段,新建Category类方法,将一下代码写入。
扩展:
可修改alert、confirm风格,也常见于网页中的提示框未拉起。
@interface UIWebView (JavaScriptAlert)
-(void) webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;
- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;
@end
@implementation UIWebView (JavaScriptAlert)
/**
alert */
- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:@"助手提示" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
[customAlert show];
}
static BOOL diagStat = NO;
static NSInteger bIdx = -1;
/** contirm */
- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame
{
UIAlertView *confirmDiag = [[UIAlertView alloc] initWithTitle:@"助手提示"
message:message
delegate:self
cancelButtonTitle:@"取消"
otherButtonTitles:@"确定", nil nil];
[confirmDiag show];
bIdx = -1;
while (bIdx==-1) {
//[NSThread sleepForTimeInterval:0.2];
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
}
if (bIdx == 0){//取消;
diagStat = NO;
}else if (bIdx == 1) {//确定;
diagStat = YES;
}
return diagStat;
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
bIdx = buttonIndex;
}
@end
相关文章推荐
- iOS开发中oc代码响应js网页点击事件的方法
- IOS开发中让点击屏幕任何地方可以隐藏键盘的方法
- IOS开发点击空白处隐藏虚拟键盘的几种方法:
- iOS开发中方法延迟执行的几种方式
- IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题
- iOS开发中UITableViewCell点击时子视图背景透明的解决方法
- 浅谈iOS开发中方法延迟执行的几种方式
- iOS开发-点击屏幕,键盘消失的极佳方法。
- 浅谈iOS开发中方法延迟执行的几种方式(转载)
- IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题
- iOS开发 获取相应自定义cell里控件的点击方法
- iOS开发——点击UITextField弹出UIDatePicker的协议实现方法
- 浅谈iOS开发中方法延迟执行的几种方式
- iOS开发 -- 延时执行某个方法的几种方式的比较和汇总
- iOS开发-UITextView中return 点击事件的监听方法
- IOS开发之延时执行的几种方法
- iOS开发--UIButton 设置圆角 边框颜色 点击回调方法
- iOS开发--异步在主线程中执行block的几种方法总结
- 31.ios 防止按钮快速点击造成多次响应的避免方法。 取消正在执行中的方法
- iOS开发 - 网页拉起app后并执行某些操作