NSTextField에 하이퍼링크 설정

개요


  • 메시지와 하이퍼 링크가있는 텍스트를 표시하기위한 창을 만드십시오
  • 이 윈도우의 xib 및 콘트롤러의 작성


  • 구현



    HyperLinkWindowController.xib




  • 라벨 2개와 Button을 붙여 넣은 것만의 간단한 UI
  • 1View-1Controller의 원칙에 의해, 후술하는 바와 같이 WindowController를 정의해 간다.

  • HyperLinkWindowController.h


    - (id)initWithMessage:(NSString *)message hyperLink:(NSString *)hyperLink;
    
  • init 함수 만 노출
  • 그 외는 외부 클래스에 알릴 필요가 없기 때문에, 구현 파일의 interface에 기재한다

  • HyperLinkWindowController.m



    init 함수


    - (id)initWithMessage:(NSString *)message hyperLink:(NSString *)hyperLink {
        if (self = [super initWithWindowNibName:[self className] owner:self]) {
            _message = message;
            _hyperLink = hyperLink;
        }
        return self;
    }
    

    하이퍼링크 설정



    코드 전체는 이하와 같다.
    /**
     @brief ラベルを更新する
     */
    - (void)updateLabels {
        // 本文の設定
        [_messageLabel setStringValue:_message];
        // ハイパーリンクの設定
        [_hyperLinkLabel setAllowsEditingTextAttributes: YES];
        [_hyperLinkLabel setSelectable: YES];
        NSMutableAttributedString *attrbutedString = [[NSMutableAttributedString alloc]
                                                      initWithString:_hyperLinkLabel.stringValue
                                                      attributes:@{
                                                                   NSForegroundColorAttributeName:[NSColor blueColor],
                                                                   NSFontAttributeName           :[NSFont  systemFontOfSize:13.0f],
                                                                   NSUnderlineStyleAttributeName :@(NSUnderlineStyleSingle)
                                                                   }
                                                      ];
        [attrbutedString addAttribute:NSLinkAttributeName
                                value:_hyperLink
                                range:NSMakeRange(0, attrbutedString.length)];
        [_hyperLinkLabel setAttributedStringValue:attrbutedString];
    }
    
    [_hyperLinkLabel setAllowsEditingTextAttributes: YES];
    [_hyperLinkLabel setSelectable: YES];
    
  • textField 에 AttributedString 를 설정할 수 있도록 한다
  • 하이퍼링크 선택 허용
  • NSMutableAttributedString *attrbutedString = [[NSMutableAttributedString alloc]
                                                  initWithString:_hyperLinkLabel.stringValue
                                                  attributes:@{
                                                               NSForegroundColorAttributeName:[NSColor blueColor],
                                                               NSFontAttributeName           :[NSFont  systemFontOfSize:13.0f],
                                                               NSUnderlineStyleAttributeName :@(NSUnderlineStyleSingle)
                                                               }
                                               ];
    
  • textField로 설정 AttributesString의 변수 만들기
  • initWithString 에 하이퍼링크 문구를 설정
  • attributes 에 textField UI를 하이퍼링크용으로 설정
  • 문자를 blueColor로 설정
  • 글꼴 크기를 13로 설정
  • 밑줄을 그리기

  • [attrbutedString addAttribute:NSLinkAttributeName
                            value:_hyperLink
                            range:NSMakeRange(0, attrbutedString.length)];
    [_hyperLinkLabel setAttributedStringValue:attrbutedString];
    
  • 방금 만든 AttibutedString 변수에 NSLinkAttributeName 속성 추가
  • 전달할 값은 하이퍼링크 URL
  • range에는 이번 텍스트 전체를 하이퍼 링크로하기 때문에 선두로부터 캐릭터 라인의 길이를 지정

  • GitHub

    좋은 웹페이지 즐겨찾기