我在哪里从 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。