如何将自定义菜单项添加到 UITextView 菜单,这是指向所选单词的***页面的链接?

Posted

技术标签:

【中文标题】如何将自定义菜单项添加到 UITextView 菜单,这是指向所选单词的***页面的链接?【英文标题】:How to add custom menu item to UITextView menu, which is a link to the Wikipedia page of the selected word? 【发布时间】:2013-11-14 11:27:02 【问题描述】:

我是 Xcode 的新手,我使用的是 4.6.3 版 - Macbook 对于新版本来说太旧了。

我浏览了互联网和 Stack Overflow,找不到我想要的,或者我无法让 sn-ps 工作。

我想在 UITextView 中长按单词时出现的菜单项中添加一个菜单项。我想让它说“Wiki”,当按下它时,它将链接到所选单词的***页面。可能是通过 Safari,还是我应该在应用程序中使用 web 视图执行此操作?

我找到了:

UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"Do This" action:@selector(item1)];
[menuController setMenuItems:[NSArray arrayWithObject:item1]];

但这似乎没有任何作用。

很遗憾,我无法理解有关检索***页面的建议,我没有那么先进,抱歉。我通常不知道将代码 sn-ps 放在哪里。

UILabel 我有更好的显示文本,矩形 UITextView 中的文本在顶部有一个间隙,因此文本没有居中,偏移 UITextview 参数意味着文本锚定在顶部,而不是居中。将菜单附加到 UILabel 似乎非常困难。

【问题讨论】:

【参考方案1】:

MyViewController.h

@interface MyViewController : UIViewController

// Linked textField from interface builder
@property (weak, nonatomic) IBOutlet UITextField *textField;

@end

MyViewController.m

viewDidLoad方法中,将wiki按钮添加到UIMenuController

- (void)viewDidLoad

    [super viewDidLoad];

    // Add wiki button to UIMenuController
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    UIMenuItem *wikiItem = [[UIMenuItem alloc] initWithTitle:@"Wiki" action:@selector(openWiki:)];
    [menuController setMenuItems:[NSArray arrayWithObject:wikiItem]];


创建openWiki方法:

- (void)openWiki:(id)sender 

    if(![[_textField selectedTextRange] isEmpty]) 

        // Url string
        NSString *urlStr = [NSString stringWithFormat:@"http://en.wikipedia.org/wiki/%@",[_textField textInRange:[_textField selectedTextRange]]];

        // Create url object
        NSURL *myURL = [[NSURL alloc] initWithString:urlStr];

        // Open url in safari
        [[UIApplication sharedApplication] openURL:myURL];

    

就是这样。

【讨论】:

感谢您的及时回复,非常感谢。现在该睡觉了,所以我会尽快尝试并告诉你。再次感谢。 非常感谢,效果很好。这是多么棒的服务啊。我很感激。 @user2963333 不客气。如果它回答了您的问题,请接受答案。 :)

以上是关于如何将自定义菜单项添加到 UITextView 菜单,这是指向所选单词的***页面的链接?的主要内容,如果未能解决你的问题,请参考以下文章

php 将自定义字段内容添加到菜单项

php WordPress类可以轻松地将自定义菜单项动态添加到菜单中。

在显示之前将动态自定义 UIMenuItem 添加到复制和粘贴菜单

Pimcore - 如何将自定义按钮添加到对象树菜单

如何将自定义选项添加到 Microsoft Edge 右键菜单?

如何将自定义菜单添加到Google Sheet Addon