0

我也用过这个:

@interface UIWebView (JavaScriptAlert)

 - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;

@end

@implementation UIWebView (JavaScriptAlert)

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
    UIAlertView *dialogue = [[UIAlertView alloc] initWithTitle:@"My Alert Title" message:message delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    [dialogue show];
}
4

2 回答 2

0

你必须使用 UIAlertView 的委托

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
    UIAlertView *dialogue = [[UIAlertView alloc] initWithTitle:@"My Alert Title" message:message delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    dialogue.tag = 1;
    [dialogue show];
}


-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (alertView.tag == 1) {
         if (buttonIndex == alertView.cancelButtonIndex) {
             //Do something here
         }
    }
}
于 2013-01-24T19:10:53.647 回答
0

您可以在 Javascript 中显示警报——这看起来与UIAlertView. 然后在解除警报后,将用户重定向到 Javascript 中的“someaction://”。在设备上,UIWebViewDelegatewebView:shouldStartLoadWithRequest:navigationType:这样实现:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    if ([request.URL absolutePath] hasPrefix:@"someaction://"]) {
        // do what you want to do after the alert has been dismissed
    }

    return NO;
}
于 2013-01-24T19:15:16.750 回答