我在哪里从 action:@selector 从 PickerView 中的 UIToolBar 创建方法,委托不同于 self?
Where I create the method from action:@selector from a UIToolBar in a PickerView with a delegate different then self?
我创建了一个 Cocoa Touch Class,名为 MyPLayer
MyPLayer.h
@interface MyPLayer : NSObject<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
我在里面创建了一个选择器视图。
MyPlayer.m
@implementation MyPLayer
SINGLETON_GCD(MyPLayer);
在开始视频捕获的方法中:
+ (void)startCaptureVideoFromViewController:(UIViewController *)controller videoUploadProgressionHandler:(VideoUploadProgressionBlock)videoUploadProgressionBlock videoSavedHandler:(VideoSavedBlock)videoSavedBlock videoCanceledHandler:(VideoWasCanceledBlock)videoCanceledBlock captureFailedHandler:(FailDetailsBlock)failBlock {
id <UIImagePickerControllerDelegate, UINavigationControllerDelegate> delegate = [MyPlayer sharedInstance];
在我的库中的 UIPickerViewController 中,我设置了委托
picker.delegate = delegate;
定义 picker.mediaTypes 和 picker.cameraDevice 后,我创建了一个 UIToolbar,并在里面创建了一个按钮。
UIToolbar *toolBar=[[UIToolbar alloc] initWithFrame:CGRectMake(0, [dadosUsuario doubleForKey:@"toolBarHeigh"]-54, [dadosUsuario doubleForKey:@"toolBarWidth"], 55)];
toolBar.barStyle = UIBarStyleBlackOpaque;
NSArray *items=[NSArray arrayWithObjects:
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(shootVideo)],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
nil];
[toolBar setItems:items];
在我的 UIViewController 上,我调用我的 MyPlayer,调用显示 UIPickerView 的方法。出现覆盖图,还有按钮。但是我在哪里可以创建方法来匹配 UIToolbar 上的@selector?
所有 UIPicker Delegate 方法都在 MyPLayer 中,但我无法触发 UIBarItem。我认为这是因为委托或其他原因。
当我在常规 UIViewController 中声明所有这些代码(选择器视图、uibaritem 和选择器方法)时,这工作正常。
关注这个post
UIBarButtonItem: target-action not working?
我发现唯一可行的方法是创建一个 UIButton,而不是 UIToolbar / UIBarButtonItem。
我创建了一个 Cocoa Touch Class,名为 MyPLayer
MyPLayer.h
@interface MyPLayer : NSObject<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
我在里面创建了一个选择器视图。
MyPlayer.m
@implementation MyPLayer
SINGLETON_GCD(MyPLayer);
在开始视频捕获的方法中:
+ (void)startCaptureVideoFromViewController:(UIViewController *)controller videoUploadProgressionHandler:(VideoUploadProgressionBlock)videoUploadProgressionBlock videoSavedHandler:(VideoSavedBlock)videoSavedBlock videoCanceledHandler:(VideoWasCanceledBlock)videoCanceledBlock captureFailedHandler:(FailDetailsBlock)failBlock {
id <UIImagePickerControllerDelegate, UINavigationControllerDelegate> delegate = [MyPlayer sharedInstance];
在我的库中的 UIPickerViewController 中,我设置了委托
picker.delegate = delegate;
定义 picker.mediaTypes 和 picker.cameraDevice 后,我创建了一个 UIToolbar,并在里面创建了一个按钮。
UIToolbar *toolBar=[[UIToolbar alloc] initWithFrame:CGRectMake(0, [dadosUsuario doubleForKey:@"toolBarHeigh"]-54, [dadosUsuario doubleForKey:@"toolBarWidth"], 55)];
toolBar.barStyle = UIBarStyleBlackOpaque;
NSArray *items=[NSArray arrayWithObjects:
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(shootVideo)],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
nil];
[toolBar setItems:items];
在我的 UIViewController 上,我调用我的 MyPlayer,调用显示 UIPickerView 的方法。出现覆盖图,还有按钮。但是我在哪里可以创建方法来匹配 UIToolbar 上的@selector?
所有 UIPicker Delegate 方法都在 MyPLayer 中,但我无法触发 UIBarItem。我认为这是因为委托或其他原因。
当我在常规 UIViewController 中声明所有这些代码(选择器视图、uibaritem 和选择器方法)时,这工作正常。
关注这个post
UIBarButtonItem: target-action not working?
我发现唯一可行的方法是创建一个 UIButton,而不是 UIToolbar / UIBarButtonItem。