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