第二个UIMenuController不隐藏

时间:2019-07-06 15:13:34

标签: ios objective-c uikit uimenucontroller

在UITextView中点击光标会弹出一个UIMenuController。点击“选择”将导致选择相关文本,并显示另一个带有新选项的UIMenuController。在文本视图中的其他任何地方点击都会导致“第二” UIMenuController隐藏。

Example of system behavior

我有一个自定义UIMenuItem,在点击该菜单时,会选择UITextView中的当前文本行,然后再次显示UIMenuController以进行后续操作,但是“第二” UIMenuController会在点击时隐藏可以在视图中的其他任何地方进行操作。

Example of undesired behavior

自定义菜单项操作:

Darkmode.js

1 个答案:

答案 0 :(得分:1)

您可以在更改UITextView的选择时隐藏UIMenuController:

@interface ViewController () <UITextViewDelegate>
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end

@implementation ViewController
@synthesize textView;

- (void)viewDidLoad {
    [super viewDidLoad];
    textView.delegate = self;
}

- (void)selectLine:(id)sender {
    ...
}

#pragma mark - UITextViewDelegate

- (void)textViewDidChangeSelection:(UITextView *)textView {
    if (UIMenuController.sharedMenuController.isMenuVisible) {
        [UIMenuController.sharedMenuController setMenuVisible:NO animated:YES];
    }
}