iOS8 Snapshotting a view that has not been rendered results in an empty snapshot

感情迁移 提交于 2020-01-01 15:06:46

问题


So I know this has been answered a number of times before, but I have yet to come across a solution that works for me.

The odd thing too, is that the first time I present the Camera from a UIPickerController it works fine, exactly as intended. But then if I open it again it shows just a black screen with the Camera controls ("Cancel" button and white take picture button).

Any help suppressing this error would be greatly appreciated, or even just some confirmation that this is a bug and I just have to wait for Apple to fix it would be a great help!

Thanks all :)

(P.S. I'm running on an iPhone 6 Plus using iOS 8.1)

EDIT: Code (I'm using Xamarin and c#)

public void ShowPhotoTaker (UIViewController vc)
    {
        UIImagePickerController picker = new UIImagePickerController ();
        picker.SourceType = UIImagePickerControllerSourceType.Camera;

        picker.FinishedPickingMedia += (object sender, 
            picker.DismissViewController(true, null);
        };

        picker.Canceled += (object sender, EventArgs e) => {
            picker.DismissViewController(true, null);
        };

        vc.PresentViewController (picker, true, null);
    }

And this is the exact error I get when calling this method

Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.

回答1:


I have had this error for a while too. I've contacted Xamarin Support, and they've told me that this is an error with iOS 8 and higher. There's no solution for this, other than waiting for some bugfix to roll out for iOS development or perhaps Xamarin itself. A workaround might be to set the build SDK to an earlier version and clean + rebuild your application.




回答2:


Snapshotting a view that has not been rendered results in an empty snapshot same error.

This is definitely a bug and you can find this in apple developer forums as well.

I have tried to avoid this error using lot of other answers on stack overflow but could not fix this issue. However using this I could some how not get this error, i would not call this a fix, But give it a try and let me know if it had fixed the issue.
Dismiss the view controller using the Grand Central Dispatch async from the main queue fixed the issue for me.

-(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];

});

}


来源:https://stackoverflow.com/questions/26892407/ios8-snapshotting-a-view-that-has-not-been-rendered-results-in-an-empty-snapshot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!