2013-11-14 8 views
9

저는 Xcode를 처음 사용하기 때문에 버전 4.6.3을 사용하고 있습니다. 새 버전에는 너무 오래된 Macbook입니다.선택한 단어의 Wikipedia 페이지에 대한 링크 인 UITextView 메뉴에 사용자 정의 메뉴 항목을 추가하는 방법은 무엇입니까?

나는 인터넷과 Stack Overflow를 둘러 보았고 내가 원하는 것을 찾을 수 없거나 작동하도록 미리보기를 얻을 수 없다.

UITextView에서 단어를 길게 누를 때 나타나는 메뉴 항목에 메뉴 항목을 추가하고 싶습니다. 나는 그것이 "Wiki"라고 말하고 싶을 때 이것을 누르면, 선택한 단어의 위키 피 디아 페이지로 링크 될 것입니다. 그것은 사파리를 통해서 일 수도 있고 웹 뷰를 통해 앱 내에서 이것을해야합니까?

내가 발견

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

그러나 이것은 아무것도 할 것 같지 않았다.

위키 피 디아 페이지 검색에 대한 제안을 이해할 수 없다고 생각합니다. 미안합니다. 미안합니다. 나는 보통 어디에 코드 스 니펫을 넣을 지 모른다.

UILabel 텍스트가 더 잘 표시되고 직사각형 UITextView의 텍스트가 맨 위에 간격이 있으므로 텍스트가 가운데 맞춤되지 않으므로 UITextview 매개 변수를 오프셋하면 텍스트가 중심이 아닌 맨 위에 고정됩니다. UILabel에 메뉴를 첨부하는 것은 매우 어려워 보입니다.

답변

14

MyViewController.h

@interface MyViewController : UIViewController 

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

@end 

viewDidLoad 방법에서 MyViewController.m

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

    } 
} 

을 그리고 그것 뿐이다.

+0

답장을 보내 주셔서 감사합니다. 정말로 감사드립니다. 이제 침대 시간 이니, 가능한 한 빨리 시도하고 알려 드리겠습니다. 다시 한번 감사드립니다. – user2963333

+0

대단히 감사합니다. 매우 잘 작동합니다. 이것이 얼마나 위대한 봉사입니까. 나는 아주 위대하다. – user2963333

+0

@ user2963333 환영합니다. 귀하의 질문에 대답한다면 대답을 받아주십시오. :) – juniperi