故事板UIImagePicker叠加UIButton不会忽略预览

时间:2013-04-06 23:38:54

标签: xcode storyboard uiimagepickercontroller

更新2

viewDidAppear执行两次,前一次和后一次触摸覆盖按钮。修复是否会向viewDidAppear添加一个条件,它会将控制权返回给调用类?如果是这样,我会很感激的建议。或许viewDidAppear执行两次这一事实表明了另一种修复方法?

更新2

更新1

问题可能是我对viewDidAppearviewDidLoad的使用情况,如下所示。有人可以帮忙吗?

- (void)viewDidAppear:(BOOL)animated
{

    self.overlayViewController = [[BSsetupOverlayViewController alloc] initWithNibName:@"BSsetupOverlayViewController" bundle:nil] ;

    // as a delegate we will be notified when pictures are taken and when to dismiss the image picker
    self.overlayViewController.delegate = self;


    [self showImagePicker:UIImagePickerControllerSourceTypeCamera];

}


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

更新1

更新0

也许我不清楚不起作用的版本与那个版本之间的区别是Storyboard用于不起作用的版本。为什么done按钮可以在没有Storyboard的情况下工作,但不能使用,即使只有一个笔尖与覆盖图有关?

更新0

The UIButton here能够解除相机预览,但在我的实际应用中,点击UIButton只能暂时取消预览和覆盖屏幕。立即返回预览。我认为问题在于我实现UIImagePicker委托的方式,但我可能错了。

I have created setup.zip here,其中包含具有不良行为的示例项目。

1 个答案:

答案 0 :(得分:0)

I took this question to the North Atlanta iOS Meetup 并建议条件子句可以解决问题,正如我在问题的更新2 中提到的那样。 Meetup的创始人Kurt Niemi通过编辑BSsetupViewController课程快速展示了如何做到这一点。

首先,他在界面中添加了一个布尔属性。

@property (nonatomic, assign) BOOL alreadyDisplayed;

其次,他在viewDidAppear方法中添加了一个子句。

if (self.alreadyDisplayed)
{
    self.alreadyDisplayed = FALSE;
    [self dismissViewControllerAnimated:NO completion:nil];
    return;

}

self.alreadyDisplayed = TRUE;

最后他在viewDidLoad方法中添加了一个不必要的条款。

self.alreadyDisplayed = FALSE;

我仍然希望这些步骤不必要,但它们似乎有效。