gpt4 book ai didi

uitextview - UIMenuController 和 UITextView 选定的文本

转载 作者:行者123 更新时间:2023-12-01 02:14:56 47 4
gpt4 key购买 nike

首先我使用这个 UITextView 类

TextView 类.h

@interface textViewClass : UITextView

TextView 类.m
@implementation textViewClass


- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

NSMutableArray *items = [[[UIMenuController sharedMenuController] menuItems] mutableCopy];

if (!items) items = [[NSMutableArray alloc] init];

UIMenuItem *menuItem;
menuItem = [[UIMenuItem alloc] initWithTitle:@"Add note" action:@selector(doSomethingHere:)];
[items addObject:menuItem];

[[UIMenuController sharedMenuController] setMenuItems:items];

}
return self;
}

- (void)doSomethingHere:(UITextView *)textView
{
NSLog(@"add note: ");

}

在 MainViewController.h
#import "textViewClass.h"

@interface testViewController : UIViewController <UITextViewDelegate>

@property (strong, nonatomic) IBOutlet textViewClass *myTextView;

在 MainViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];

[self.myTextView setEditable:NO];
[self.myTextView setDelegate:self];

[self.myTextView setText:@"Lorem ipsum dolor sit er elit lamet,
consectetaur cillium adipisicing pecu,
sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat."];
}


#pragma mark - UITextView Delegate

- (void)textViewDidChangeSelection:(UITextView *)textView
{

NSString *string = [self.myTextView textInRange:textView.selectedTextRange];

NSLog(@"%@", string);



}

当我在 myTextView 中选择一些文本并将此选择复制到剪贴板并根据需要执行一些操作时,我想显示“添加注释”。

最佳答案

嗯,你需要两个更正。 第一个是:

你必须执行 UIResponder在您的自定义 UITextView 中使用这样的方法类(class)。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {

if (action == @selector(doSomethingHere:) || action == @selector(copy:)) {

if (self.selectedRange.length > 0) {

return YES;
}
}
return NO;
}

在这里,您正在使用 UIResponderStandardEditActions 下定义的代码过滤操作。非正式协议(protocol)。
if (action == @selector(doSomethingHere:) || action == @selector(copy:))

如果你只需要 yourAction只有这样
if (action == @selector(doSomethingHere:))

第二次更正:如果你实现这样的协议(protocol)
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {

return YES;
}

默认情况下,您将看到所有可能的命令:通过选择器对其进行过滤或仅像这样添加您自己的命令,
UIMenuItem *menuItem;
menuItem = [[UIMenuItem alloc] initWithTitle:@"Add note" action:@selector(doSomethingHere:)];
[items addObject:menuItem];

[[UIMenuController sharedMenuController] setMenuItems:@[menuItem]];

希望它会帮助你...

注意:更多信息请查看 NSHipster

关于uitextview - UIMenuController 和 UITextView 选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865200/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com