Ios UIMenuController具有零帧

Ios UIMenuController具有零帧,ios,objective-c,uimenucontroller,Ios,Objective C,Uimenucontroller,我真的把所有其他与这个话题相关的问题都讨论了一遍。但到目前为止没有人帮我。 我正试图在ui视图上显示ui菜单控制器。因此,我对UIView进行了子类化,并已经实现了所有必需的方法。 在UIViewController中,我实例化了一个UIgestureRecognitor并将其添加到自定义UIView中。这个很好用。我还可以处理长按手势。只是UIMenuController不会出现 @interface CopyableView : UIView @end @implementation Co

我真的把所有其他与这个话题相关的问题都讨论了一遍。但到目前为止没有人帮我。

我正试图在
ui视图
上显示
ui菜单控制器
。因此,我对
UIView
进行了子类化,并已经实现了所有必需的方法。 在
UIViewController
中,我实例化了一个
UIgestureRecognitor
并将其添加到自定义
UIView
中。这个很好用。我还可以处理长按手势。只是
UIMenuController
不会出现

@interface CopyableView : UIView
@end

@implementation CopyableView

- (BOOL)canBecomeFirstResponder
{
    NSLog(@"_CAN BECOME 1. RESPONDER_");
    return YES;
}

- (BOOL)canPerformAction:(SEL)action
              withSender:(id)sender
{
    NSLog(@"_CAN PERFORM ACTION_");
    return (action == @selector(copy:));
}

- (void)copy:(id)sender
{
    NSLog(@"_COPY_");
}

@end


@interface InfoViewController : UIViewController

@property (nonatomic, weak) IBOutlet CopyableView *myView;

@end

@implementation InfoViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.myView addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self
                                                                                    action:@selector(handleLongPressGesture:)]];
}

- (void)handleLongPressGesture:(UILongPressGestureRecognizer *)recognizer
{
    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        NSLog(@"__ %i __", [UIMenuController sharedMenuController].menuVisible);

        [self.myView becomeFirstResponder];

        UIMenuItem *item = [[UIMenuItem alloc] initWithTitle:@"Copy"
                                                      action:@selector(copy:)];
        [[UIMenuController sharedMenuController] setMenuItems:@[item]];
        [[UIMenuController sharedMenuController] setTargetRect:CGRectMake(33, 33, 33, 33)
                                                        inView:self.myView];
        [[UIMenuController sharedMenuController] setMenuVisible:YES
                                                       animated:NO];

        NSLog(@"__ %i __", [UIMenuController sharedMenuController].menuVisible);
        NSLog(@"#### %@ ####", NSStringFromCGRect([UIMenuController sharedMenuController].menuFrame));
    }
}
检查
[UIMenuController sharedMenuController].menuVisible
将在方法末尾返回
true
。所以事情似乎是可行的。我仍然没有看到任何事情发生。
UIMenuController
的框架是
{0,0},{0,0}
,我无法理解。

你的CopyableView中的日志工作正常吗?我已经在iPad上的模拟器8.2上测试了相同的代码,对我来说工作正常。只有一期它显示了两份而不是一份。请检查您的IBOutlet以获取“myView”。@仅限JasperPolcanBecomeFirstResponder@VijayMasiwal谢谢。UIMenuController是否有可能被上面的东西隐藏起来?如何确保它位于屏幕上的每一层之上?