1

私は iOS で非常に小さなエディターに取り組んでいます。1 つのビュー、1 つのボタン、および textView しかありません。ボタンが押されると、カスタム UIMenuController がポップアップし、3 つのオプション (太字の切り替え、斜体の切り替え、筆記体の切り替え) が表示されます。

これは非常にうまく機能していますが、UITextView がファーストレスポンダーのときにボタンを押すと、「select」と「select all」という名前の 2 つのデフォルト メニュー項目も表示されます。

それらを取り除きたいのですが、これを行う方法がわかりません。これは、ボタンが押されたときに呼び出されるコードです。

- (IBAction)settingsPressed:(id)sender
{
    UIMenuController *sharedController = [UIMenuController sharedMenuController];

    UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle:bold ? @"Bold off" : @"Bold on" action:@selector(toggleBold:)];
    UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:italics ? @"Italics off" : @"Italics on" action:@selector(toggleCursive:)];
    UIMenuItem *menuItem3 = [[UIMenuItem alloc] initWithTitle:underline ? @"Underline off" : @"Underline on" action:@selector(toggleUnderline:)];

    NSArray *menuItems = @[menuItem1, menuItem2, menuItem3];

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

    [sharedController setMenuItems:menuItems];
    [sharedController setMenuVisible:YES animated:YES];

    [sharedController setMenuItems:nil];
}

誰でもこれを行う方法を説明できますか?

ありがとう!

4

1 に答える 1

3

のサブクラスを作成しUITextViewます。サブクラスで、アクションがまたはの場合canPerformAction:withSender:に戻るようにオーバーライドします。詳細については:NO@selector(select:)@selector(selectAll:)

于 2012-11-04T21:46:21.930 に答える