回应AJAX调用iOS UIWebView

时间:2013-04-29 13:40:23

标签: ios objective-c ajax file-upload uiwebview

我正在尝试通过webview实现照片上传系统。

我通过safari浏览器工作,但还没有通过webview工作。我的研究让我意识到我需要使用UIImagePickerController来捕获图像文件路径,并且有这个方法:

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info   {

    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSData *data = UIImageJPEGRepresentation( [info objectForKey:@"UIImagePickerControllerOriginalImage"] , 1.0);
    NSString *fullPath = [path stringByAppendingPathComponent:@"image_tmp.jpg"];
    if ([[NSFileManager defaultManager] createFileAtPath:fullPath contents:data attributes:nil] ) {
        NSLog([NSString stringWithFormat:@"file successfully written to path %@",fullPath],nil);
    }
}

但是,我无法解决如何通过UIImagePickerController拦截和响应ajax调用。

1 个答案:

答案 0 :(得分:0)

经过一些实验,我已经找到了解决问题的方法。可以这么说,我似乎过度设计了这个问题。

我的AJAX调用需要简单地返回图像路径,其余部分将由服务器端处理。我的所有研究都指出UIImagePickerController是返回图像路径所必需的,但事实并非如此。

- (void)viewWillAppear:(BOOL)animated {

    if(animated){
        NSLog(@"YES");
    }else{
        NSLog(@"NO");
        NSString *url = [NSString stringWithFormat:@"http://www.mywebview.com/photo-upload.php"];
        [photoview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
        timer = [NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) target:self selector:@selector(tick) userInfo:nil repeats:YES];
    }   
}

通过使用viewWillAppear并为动画返回一个布尔值,我能够判断该调用是用于页面加载还是用于AJAX调用。实际上是页面重新加载阻止了上传,文件路径一直在传递......简单的监督是一个相当新的iOS开发人员,但也许这将有助于处于类似情况的人。

如果有人可以详细说明或整理我的代码/解释,请执行!