Re: [Pyobjc-dev] Using delegates on iOS
Brought to you by:
ronaldoussoren
|
From: <end...@gm...> - 2011-07-10 20:55:26
|
Hi.
I'd like to inform you that I found what the problem was. Basically it
had to do with the fact I didn't start properly the camera viewfinder.
Let me know if you are interested in more details.
I will post a working port of my iCam project written in PyObjC, relying
on this module, at http://mobile-revival.110mb.com/ReVival/ (alias
http://go.to/slog) in the following days.
iCam is a cross platform video surveillance application using camera phones
that I worked on for more than 1 year.
The project transforms a mobile phone in a surveillance camera with
motion detection.
One can also create a network of such devices connected via Bluetooth or
WiFi, where the master phone transmits via 3G/GSM. The photo/video
information can be uploaded on YouTube, Picasa, etc.
The phone application can be controlled remotely via Internet.
This project is deployed and in use for almost 1 year.
Best regards.
On Sat, Jul 9, 2011 at 12:54 AM, <...> wrote:
> Hi.
> When I load UIKit with
> myUIKit = objc.loadBundle("UIKit", globals(),
> "/System/Library/Frameworks/UIKit.framework")
> I import a lot of symbols, but a few protocols such as
> UIImagePickerControllerDelegate and UINavigationControllerDelegate are not
> loaded with this occasion (probably because they are not used in any any
> other place).
>
> Could you please tell me if you have an idea on what goes wrong when
> using UIImagePickerController with UIImagePickerControllerDelegate in the
> code below.
> The symptom is the following: none of the methods of MyDelegate don't
> get called, although ipc.takePicture() should call them.
> Documentation on how to use UIImagePickerController at:
> -
> http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/CameraAndPhotoLib_TopicsForIOS/Articles/TakingPicturesAndMovies.html#//apple_ref/doc/uid/TP40010406
> -
> http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html#//apple_ref/occ/cl/UIImagePickerController
>
> """
> Following
> http://pyobjc.sourceforge.net/documentation/pyobjc-core/wrapping.html:
> "If the framework defines any (informal) protocols you should add
> objc.informal_protocol objects for those protocols to your module. These can
> be defined in a submodule, as long as you arrange for that module to be
> loaded whenever someone imports your package."
> """
> UIImagePickerControllerDelegate =
> objc.informal_protocol("UIImagePickerControllerDelegate", [
> #- (void)imagePickerController:(UIImagePickerController *)picker
> didFinishPickingMediaWithInfo:(NSDictionary *)info
> objc.selector(None,
> selector="imagePickerController:didFinishPickingMediaWithInfo:",
> signature="v@:@@"),
> #- (void)imagePickerControllerDidCancel:(UIImagePickerController
> *)picker
> objc.selector(None, selector="imagePickerControllerDidCancel:",
> signature="v@:@"),
> #- (void) imagePickerController:(UIImagePickerController *)picker
> didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary
> *)editingInfo
> objc.selector(None,
> selector="imagePickerController:didFinishPickingImage:editingInfo:",
> signature="v@:@@@")
> #objc.selector(None, selector="testMethod", signature="I@:",
> isRequired=1), #isClassMethod=1
> ])
> UINavigationControllerDelegate =
> objc.formal_protocol("UINavigationControllerDelegate",
> (objc.protocolNamed("NSObject"), ), [
> #The protocol defines methods that the delegate CAN implement (NOT
> mandatory)
> #- (void)navigationController:(UINavigationController
> *)navigationController didShowViewController:(UIViewController
> *)viewController animated:(BOOL)animated
> #- (void)navigationController:(UINavigationController
> *)navigationController willShowViewController:(UIViewController
> *)viewController animated:(BOOL)animated
> ])
>
> #class MyDelegate(UINavigationControllerDelegate): #function takes at most
> 1 argument (3 given). ANYHOW BAD BECAUSE I MISTAKED AND USED
> UINavigationControllerDelegate
> class MyDelegate(NSObject, UIImagePickerControllerDelegate):
> #- (void) imagePickerController:(UIImagePickerController *)picker
> didFinishPickingMediaWithInfo:(NSDictionary *)info
> @objc.signature("v@:@@")
> def imagePickerController_didFinishPickingMediaWithInfo_(self, picker,
> info):
> try:
> print "Entered
> imagePickerController_didFinishPickingMediaWithInfo_(self, picker = %s, info
> = %s)." % (str(picker), str(info))
> sys.stdout.flush()
>
> picker.release()
> except:
> traceback.print_exc()
> sys.stderr.flush()
>
> #Provide 2.x compliance
> #- (void) imagePickerController:(UIImagePickerController *)picker
> didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary
> *)editingInfo
> @objc.signature("v@:@@@")
> def imagePickerController_didFinishPickingImage_editingInfo_(self,
> picker, image, editingInfo):
> try:
> print "Entered
> imagePickerController_didFinishPickingImage_editingInfo_(self, picker = %s,
> image = %s, editingInfo = %s)." % (str(picker), str(image),
> str(editingInfo))
> sys.stdout.flush()
>
> #NSDictionary *dict = [NSDictionary dictionaryWithObject:image
> forKey:@"UIImagePickerControllerOriginalImage"];
>
> self.imagePickerController_didFinishPickingMediaWithInfo_(picker, dict)
> except:
> traceback.print_exc()
> sys.stderr.flush()
>
> #- (void) imagePickerControllerDidCancel:
> @objc.signature("v@:@")
> def imagePickerControllerDidCancel_(self, picker):
> try:
> print "Entered imagePickerControllerDidCancel_(self, picker =
> %s)." % (str(picker))
> sys.stdout.flush()
>
> self.dismissModalViewControllerAnimated_(objc.YES)
> picker.release()
> except:
> traceback.print_exc()
> sys.stderr.flush()
>
> ipcDelegate = MyDelegate.alloc().init()
>
> ...
> ipc = UIImagePickerController.alloc().init()
> ...
> ipc.takePicture()
>
>
> Thank you.
>
>
|