11

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

我环顾互联网和 Stack Overflow,找不到我想要的东西,或者我无法让代码片段工作。

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

我发现:

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

但这似乎没有任何作用。

不幸的是,我无法理解检索维基百科页面的建议,我不是那么先进,抱歉。我通常不知道将代码片段放在哪里。

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

4

1 回答 1

16

MyViewController.h

@interface MyViewController : UIViewController

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

@end

我的视图控制器.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];

    }
}

就是这样。

于 2013-11-14T12:16:36.043 回答