I have added the following code block on the touch event of a button.
It is throwing the following error:
*
 Name: NSInvalidArgumentException Reason: On iPad, UIImagePickerController
must be presented via UIPopoverController*

partial void TakeSpacePhoto (MonoTouch.UIKit.UIButton sender)
                {
                        var camera=UIImagePickerControllerSourceType.Camera;
                        if(UIImagePickerController.IsSourceTypeAvailable 
(camera))
                        {
                                UIImagePickerController picker=new 
UIImagePickerController();
                                picker.SourceType=camera;
                                picker.Delegate=new 
StillImagePickerDelegate(this);
                                this.PresentModalViewController (picker, true);
                        }
                        else
                        {
                                if (
UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
)
                                {
                                        UIImagePickerController picker=new 
UIImagePickerController();
                                        picker = new UIImagePickerController();
                                        picker.Delegate = new 
ImageGalleryPickerDelegate(this);
                                        picker.SourceType = 
UIImagePickerControllerSourceType.PhotoLibrary;
                                        this.PresentModalViewController(picker, 
true);
                                }
                        }
                }

I added two utility classes to my project, named ImageGalleryPickerDelegate
and StillImagePickerDelegate. 

Here is the code for the two classes

ImageGalleryPickerDelegate
_____________________________
namespace ASTONAPP
{
        public class ImageGalleryPickerDelegate : 
UIImagePickerControllerDelegate
        {
                AssessmentArea _pg;
                UIImageView imageView;
                public ImageGalleryPickerDelegate(AssessmentArea pg)
                {
                        _pg = pg;       
                }
                
                public ImageGalleryPickerDelegate(){}
                
                public void ClearImage()
                {
                        if ( imageView != null )
                        {
                                _pg.View.WillRemoveSubview(imageView);  
                        }
                }
                
                public override void Canceled (UIImagePickerController picker)
                {
                        _pg.DismissModalViewControllerAnimated(true);
                        Console.WriteLine ("Cancelled picking an image");
                }
                
                public override void FinishedPickingMedia 
(UIImagePickerController picker,
NSDictionary info)
                {
                        var originalImage = new 
NSString("UIImagePickerControllerOriginalImage");
                        UIImage image = (UIImage) info[originalImage];
                        imageView = new UIImageView(new RectangleF(0f, 0f, 
320f, 460f));
                        imageView.Image = image;
                        _pg.View.AddSubview(imageView);
                        _pg.DismissModalViewControllerAnimated(true);
                        Console.WriteLine ("Did finish picking media");
                }
        }
}

and 


StillImagePickerDelegate
_________________________
namespace ASTONAPP
{
        public class StillImagePickerDelegate : UIImagePickerControllerDelegate
        {
                AssessmentArea _sp;
                public StillImagePickerDelegate(AssessmentArea sp)
                {
                        _sp = sp;       
                }
                
                public override void Canceled (UIImagePickerController picker)
                {
                        _sp.DismissModalViewControllerAnimated(true);
                        Console.WriteLine ("Cancelled picking an image");
                }
                
                public override void FinishedPickingMedia 
(UIImagePickerController picker,
NSDictionary info)
                {
                        var originalImage = new 
NSString("UIImagePickerControllerOriginalImage");
                        UIImage image = (UIImage) info[originalImage];
                        image.SaveToPhotosAlbum(delegate(UIImage img, NSError 
err){
                                Console.WriteLine("Saved!");    
                        });
                        UIImageView imageView = new UIImageView(new 
RectangleF(0f, 0f, 320f,
460f));
                        imageView.Image = image;
                        _sp.View.AddSubview(imageView);
                
                        _sp.DismissModalViewControllerAnimated(true);
                        Console.WriteLine ("Did finish picking media");
                }
        }

}

where AssessmentArea is the name of my xib file. The screen contains two
buttons, a label and one UiImageView for displaying the selected image.


This is the current scenario.
Why is this error appearing? Can anybody help me by spotting the error? I
think it has got something to do with the configurations. I maybe wrong
though, I'm just a noob. Look forward to receiving some help on this one.

Many Thanks in anticipation.



--
View this message in context: 
http://monotouch.2284126.n4.nabble.com/Take-Pictures-with-IPHone-Camera-tp4656124p4656216.html
Sent from the MonoTouch mailing list archive at Nabble.com.
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to