gpt4 book ai didi

ios - 关闭和代表 UIImagePickerController 相机 iOS8.4 的问题

转载 作者:行者123 更新时间:2023-11-28 17:51:43 25 4
gpt4 key购买 nike

编辑问题从头开始恢复。

我有一个 ViewController A,它有一个导航栏按钮,它显示一个源类型为 UIImagePickerControllerSourceTypeCameraUIImagePickerController,我们称这个 ViewController B。在 AdidFinishPickingMediaWithInfo: 方法中,我然后呈现 ViewController C

问题现在从这里开始。当我最终到达C时,我们可以清楚地看到 View 堆栈是:

A -modal-> B -modal-> C

C 导航栏上出现一个“后退”按钮,可以将我带回 B。但是,由于 B 是一个 UIImagePickerController,我不能重用它,必须将其关闭。因此,为了实现这一点,我目前在 C 上为该“后退”按钮执行以下方法:

- (IBAction)backOnPost:(UIBarButtonItem *)sender
{
[self.view endEditing:YES];

UINavigationController *LogControl = [self.storyboard instantiateViewControllerWithIdentifier:@"LogControl"];
RGLogViewController *logView = (RGLogViewController *)LogControl.topViewController;

[UIView animateWithDuration:0.25 animations:^{
self.presentingViewController.view.alpha = 0;
[self.presentingViewController dismissViewControllerAnimated:NO completion:nil];
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:NO completion:nil];
} completion:^(BOOL finished){
[logView setBoolBackPushed];
}];
}

上面的代码之所以有效,是因为它通过关闭 BC 将我带回了 A。但是,您仍然可以看到过渡,因为两个 ViewController 的解雇导致了一些“黑屏”。您可以在完成 block [logView setBoolBackPushed]; 中看到,这将静态 BOOL 变量设置为 true,以便 AviewWillAppear: 立即呈现一个新的 UIImagePickerController - 该方法如下所示:

- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"HERES postBackButtonPushed:%hhd", postBackButtonPushed);

if(postBackButtonPushed == true)
{
self.view.hidden = YES;
self.navigationController.navigationBar.hidden = YES;
self.tabBarController.tabBar.hidden = YES;

UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:NO completion:^{}];
}

这就是目前我获得以下预期效果的方式:从 A 到相机 (B),到 C,然后回到我们新的 B 新相机。这是通过几乎完美的无缝过渡实现的。

我仍然无法稍微看到过渡。另一个问题是时机。这种关闭和呈现 ViewController 的协作花费的时间比我希望的要多。这几乎是瞬间的,但我想要更好的东西。我应该怎么做,我做错了什么吗?

最佳答案

有一些可能的情况会导致您的问题:

  1. 在 A 之后呈现 B,然后呈现 C 对于 UX/UI 和代码来说都是一种有点奇怪的行为。要么从 A 中推 B,然后将 C 呈现在 B 上,要么解散 A,呈现 B,解散 B,呈现 C。

  2. 有完成方法,但您没有使用它们。您的代码显示您为 C 和 B 调用了两次 dismissViewControllerAnimated 。你应该处理提出和驳回订单。我认为 iOS 8.2+ 或 8.3+ 开始更有效地处理它们。并且如果有错误,会在这个版本之后崩溃。

  3. imagepicker Controller 在以不同方式关闭 VC 时导致此错误。对于前。在呈现 VC 之前显示警报弹出窗口也会导致崩溃。

关于ios - 关闭和代表 UIImagePickerController 相机 iOS8.4 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com