11

私は Xcode を初めて使用します。バージョン 4.6.3 を使用しています。Macbook は新しいバージョンには古すぎます。

インターネットとスタック オーバーフローを見回しましたが、必要なものが見つからないか、スニペットを機能させることができません。

UITextViewで単語を長押しすると表示されるメニュー項目にメニュー項目を追加したいと考えています。「Wiki」と表示させたいのですが、これを押すと、選択した単語のウィキペディアのページにリンクします。それはSafariを介している可能性がありますか、それともアプリ内でWebビューを使用してこれを行う必要がありますか?

私が見つけた:

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

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];

    }
}

以上です。

于 2013-11-14T12:16:36.043 に答える