首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第二UIMenuController不隐藏

第二UIMenuController不隐藏
EN

Stack Overflow用户
提问于 2019-07-06 15:13:34
回答 1查看 512关注 0票数 7

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

我有一个定制的UIMenuItem,当点击它时,选择UITextView中当前的文本行,然后为后续的操作再次显示UIMenuController,但是当按预期点击视图中的其他位置时,“第二个”UIMenuController做而不是隐藏。

自定义菜单项操作:

代码语言:javascript
复制
- (void)selectLine:(id)sender {
    NSString *string = [[self textView] text];
    NSRange range = [[self textView] selectedRange];
    NSRange newRange = [string lineRangeForRange:range];

    if ([[string substringWithRange:newRange] hasSuffix:@"\n"]) {
        newRange.length -= 1;
    }
    [[self textView] setSelectedRange:newRange];

    CGRect targetRect = [[self textView] firstRectForRange:[[self textView] selectedTextRange]];
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    [menuController setTargetRect:targetRect inView:[self textView]];
    [menuController setMenuVisible:YES animated:YES];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-26 06:31:01

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

代码语言:javascript
复制
@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];
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56915341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档