0

私は 2 つの UIViewController を持っています。1 つはメインで、このトラフから 2 番目のボタンに移動できます。SecondView.m には、次のコードがあります。

    - (IBAction)showpopup:(id)sender {
    [self becomeFirstResponder];
    UIMenuController *sharedController = [UIMenuController sharedMenuController];
    UIMenuItem *x2 = [[UIMenuItem alloc] initWithTitle:@"2x2" action: @selector(mat)];
    UIMenuItem *x3 = [[UIMenuItem alloc] initWithTitle:@"3x3" action: @selector(mat)];
    UIMenuItem *x4 = [[UIMenuItem alloc] initWithTitle:@"4x4" action: @selector(mat)];
    UIMenuItem *x5 = [[UIMenuItem alloc] initWithTitle:@"5x5" action: @selector(mat)];

    NSArray *menuArray = [NSArray arrayWithObjects: x2,x3,x4,x5, nil];


    CGRect drawRect = [sender convertRect:[sender bounds] toView: self.view];
    [sharedController setTargetRect:drawRect inView: self.view];

    [sharedController setMenuItems:menuArray];
    [sharedController setMenuVisible:YES animated:YES];
    [sharedController setMenuItems: nil];
}

-(BOOL)canBecomeFirstResponder{
    return YES;
}

-(int)mat:(id)sender{
    return 0;
}

ボタンは「タッチアップ内部」としてリンクされていますが、実行すると UIMenuController が表示されません。メインの UIViewController でもまったく同じコードが機能します。

ありがとう

4

1 に答える 1

0

何も不足していない場合は、たとえば、sharedController.view をサブビューとして mainController.view に追加する必要があると思います (たとえば、メイン コントローラーで `showpopup が定義されていると仮定します)。

- (IBAction)showpopup:(id)sender {
    [self becomeFirstResponder];
    UIMenuController *sharedController = [UIMenuController sharedMenuController];
    ...
    [sharedController setMenuItems:menuArray];
    [sharedController setMenuVisible:YES animated:YES];
    [sharedController setMenuItems: nil];
    [self.view addSubview:sharedController.view];
}

または、モーダルに sharedController を提示することもできます (addSubview上記の行を置き換えます):

[self presentViewController:sharedController animated:YES completion:nil];

いずれにせよ、「提示」ビットが欠落しているように思えます。

于 2013-01-08T19:14:16.590 に答える