对尚未渲染的视图进行快照会导致xamarin.ios7中出现空快照

对尚未渲染的视图进行快照会导致xamarin.ios7中出现空快照,ios7,xamarin.ios,Ios7,Xamarin.ios,当我从相机拍摄图像时,它在ios7的控制台上出现错误。我首先尝试在代码中不添加Thread.sleep(3000),但这也不起作用 完全错误: 对尚未渲染的视图进行快照将导致空快照。确保您的视图在快照之前或屏幕更新之后至少呈现一次 代码: 为了解决iOS 7中的这个问题,这也解决了我同样的错误 当我展示UIImagePickerController时,在我的例子中称之为imagePickerController 不要使用nil或NULL。相反,我使用了下面的代码,打开相机时错误不再出现 [sel

当我从相机拍摄图像时,它在ios7的控制台上出现错误。我首先尝试在代码中不添加Thread.sleep(3000),但这也不起作用

完全错误: 对尚未渲染的视图进行快照将导致空快照。确保您的视图在快照之前或屏幕更新之后至少呈现一次

代码:


为了解决iOS 7中的这个问题,这也解决了我同样的错误

当我展示
UIImagePickerController
时,在我的例子中称之为
imagePickerController

不要使用nilNULL。相反,我使用了下面的代码,打开相机时错误不再出现

[self presentViewController:imagePickerController animated:YES completion:^{....}];

这有点像黑客,但有时出于交互原因或其他原因,您需要在生命周期的某个时间初始化某些东西。所以我所做的只是在它所在的视图上0.1秒后调度它,它似乎工作正常。进一步调查

    double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
     // Show camera view controller.
[self presentViewController:imagePickerController animated:YES completion:nil];


});

希望这能有所帮助,直到有人找到更好的解决方案。

对未渲染的视图进行快照会导致空快照错误

这绝对是一个bug,你也可以在苹果开发者论坛上找到

我已经尝试使用许多关于堆栈溢出的其他答案来避免这个错误,但无法解决这个问题。然而,使用这个我可以知道如何不得到这个错误,我不会说这是一个修复,但给它一个尝试,让我知道,如果它已经修复了这个问题。 使用主队列中的Grand Central Dispatch async关闭视图控制器为我解决了这个问题

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

// Code to handle the image data 

dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];
});
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];

});

}

对您有帮助吗?我在Xamarin.ios中实现了上述解决方案并进行了测试,但有时不会产生错误,有时也不会。我已经测试了很多次。它对我没有帮助。我仍然不时收到“快照视图…”的消息:/这对我没有帮助。我仍然会收到“拍摄视图…”的消息
-(void)imagePickerController:(UIImagePickerController *)picker     didFinishPickingMediaWithInfo:(NSDictionary *)info {

// Code to handle the image data 

dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];
});
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];

});

}