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

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

自定义菜单项操作:
- (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];
}发布于 2019-07-26 06:31:01
在更改对UIMenuController的选择时,可以隐藏UITextView:
@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];
}
}https://stackoverflow.com/questions/56915341
复制相似问题