【发布时间】:2014-03-12 19:02:11
【问题描述】:
所以我有一个 WebView,它可以捕获网站中 URL 的变化以打开相机。 图片完成后,我想将其发回:
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"addImageiOS(%@)", base64EncodedImage]];
它不起作用,我猜是因为 self.webView 不是 webview。 我对这些代表和事情一团糟,我已经习惯了 Android。 好吧,我的代码在这里。
WebViewController.h
#import <UIKit/UIKit.h>
@interface WebViewController : UIViewController <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) IBOutlet UIToolbar *ToolBar;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *MenuButton;
@end
WebViewController.m
#import "WebViewController.h"
@interface WebViewController ()
@end
@implementation WebViewController
@synthesize webView = _webView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSLog(@"%@", js_result);
}
- (void)viewDidLoad
{
[super viewDidLoad];
_webView.delegate = self;
NSURL *url = [NSURL URLWithString:@"http://some_url"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestURL];
// Do any additional setup after loading the view.
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *URL= [prefs stringForKey:@"URL"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *filePath= [url path];
//NSString *myString = [url absoluteString];
if ([filePath rangeOfString:@"TAKEPICWITHCAMERA"].location != NSNotFound) {
//TAKE PIC WITH CAMERA
[self openCamera];
return NO;
}
return YES;
}
- (void)openCamera {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
#pragma mark - Image Picker Controller delegate methods
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
NSString *base64EncodedImage = [self encodeToBase64String:chosenImage];
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"addImageiOS(%@)", base64EncodedImage]];
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (NSString *)encodeToBase64String:(UIImage *)image {
return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
@end
这一定是我错过了一些小事。
【问题讨论】:
标签: javascript ios objective-c xcode5