0

我只是想显示相机或照片库,以便用户可以选择图像并返回应用程序。我终于可以做到了,但我面临的问题是,当 UIViewController 结束时(用户选择图像或用户按下取消的原因)应用程序工作,但事件停止工作。

我的 UIViewController 是这样定义的:

  @interface IOSNativeCb : UIViewController 
  - (void)imagePickerControllerUIImagePickerController *)picker                               didFinishPickingMediaWithInfoNSDictionary *)info;
  @end

  @implementation IOSNativeCb
  - (void)imagePickerControllerUIImagePickerController *)picker didFinishPickingMediaWithInfoNSDictionary *)info {

  [picker dismissModalViewControllerAnimated:YES];
  [picker release];
  //log all the dictionary of the selected image
  for (id key in info) {
  NSLog(@"key: %@, value: %@ \n", key, [info objectForKey:key]);
  }
  }
  //if user canceled
  - (void)imagePickerControllerDidCancelUIImagePickerController *)picker {
  UIWindow *window = [UIApplication sharedApplication].keyWindow;
  [picker dismissViewControllerAnimated:YES completion:^{[self dismissViewControllerAnimated:YES completion:nil];}];
  [self removeFromParentViewController];
  [window makeKeyAndVisible];


  }
  @end

我从openfl用这个初始化:

  const void initAppGallery(){
  UIWindow *window = [UIApplication sharedApplication].keyWindow;
  IOSNativeCb *wn = [[IOSNativeCb alloc] init];

  [window addSubview: wn.view];
  UIImagePickerController *picker = [[UIImagePickerController alloc] init];
  picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
  picker.delegate = wn;
  [wn presentModalViewController:picker animated:YES];
  [picker release];

  }

在我如何删除或关闭 UIViewController 方面尝试了几件事,以查看视图是否仍然是主要的,因此事件不再起作用,但到目前为止还没有。

我可以尝试什么的任何想法?有人有这样的问题吗?是我第一次用 objetive-c + haxe 编码,所以我有点不知道什么功能或东西可能是问题所在。我正在用一种我几乎不知道的语言盲编码。

问候。

4

2 回答 2

0

解决方案更简单,我只是在之后添加[self removeFromParentViewController];

  [self.view removeFromSuperview];

并工作:D

于 2014-01-08T11:56:05.127 回答
0

一些可以帮助您找到错误的事情:

  1. 使用window.rootViewController = wn代替[window addSubview:wn.view]
  2. 调用 [picker dismissModalViewControllerAnimated:YES] 后不要释放选择器。您已经在 initAppGallery 方法上释放了一次选择器,因此再次释放它可能会导致未知问题(可能会崩溃)
  3. 调用[window makeKeyAndVisible]应该在 initAppGallery 结束时完成。

也看看这个问题,它可能会对你有所帮助。

于 2014-01-08T00:48:36.537 回答