2011-10-05 3 views
2

iOS 앱의 라벨 텍스트에 하이퍼 링크를 포함시키는 간단한 방법을 찾으려고합니다. 목표는 사용자가 URL을 탭하도록하는 것이며 앱은 해당 URL로 Safari 브라우저를 엽니 다.Cocoa Touch의 라벨에 하이퍼 링크를 포함시키는 방법은 무엇입니까?

URL이 레이블로 포함 된 버튼에 대해 읽었지만 응용 프로그램에서는 작동하지 않습니다.

간단한 방법이 있나요?

고마워요

답변

1

NSArrtibutedStrings을 사용하여이 작업을 수행 할 수 있지만이 C 함수를 감싸는 래퍼를 사용하는 것이 좋습니다. 나는 OHAttributedLabel을 좋아한다.

포함 된 데모는 정확히 어떻게 하이퍼 링크를 처리 할 수 ​​있는지 보여줍니다.

+0

이것은 내가 찾고있는 것입니다. 감사! – user965985

0

Safari를 호출하는 대신 UIWebView를 시작할 수 있습니다. 사용자는 해당 웹 페이지에서 수행 할 수있는 작업에 대해 더 많은 제어 권한을가집니다.

+0

그래, 내가있는 UIWebView를 사용하는 방법에 대한 생각했습니다 : 당신의 UIViewController에 . 그러나 나는 여전히 Safari 나 UIWebView 중 하나를 시작하기 위해 레이블 텍스트 내에 하이퍼 링크를 포함하는 방법을 고수하고있다. – user965985

+0

하이퍼 링크를 만드는 방법으로 자신의 로컬 HTML에서 UIWebView를 사용하는 것이 좋습니다. . – Luke

+0

레이블에 때로는 (때로는 암호화 된) URL을 원하십니까? 대신 "xyz-website 방문"을 넣을 수 있습니다. 이는 URL이 사용자에게 표시되지 않는 설명입니다. –

0

라벨에 대한 사용자 상호 작용을 활성화 한 다음 터치를 처리하려면 - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 메서드를 재정의해야합니다.

urlLabel.userInteractionEnabled = YES; 

touchedEnded의 예 : WihEvent : 사용자 상호 작용을 활성화하려면

은 UILabel의에서 다음 속성을 설정

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch * touch; 
    CGPoint currPt; 

    if ((touches = [event touchesForView:urlLabel])) 
    { 
     touch = [touches anyObject]; 
     currPt = [touch locationInView:self.view]; 
     if ((currPt.x >= urlLabel.frame.origin.x) && 
      (currPt.y >= urlLabel.frame.origin.y) && 
      (currPt.x <= (urlLabel.frame.origin.x + urlLabel.frame.size.width)) && 
      (currPt.y <= (urlLabel.frame.origin.y + urlLabel.frame.size.height))) 
     { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlLabel.text]]; 
     return; 
     }; 
    }; 

    return; 
} 
+0

이것은 OP에 응답하지 않습니다. 텍스트 내의 하이퍼 링크에 터치가 발생했는지 여부를 확인하는 방법은 무엇입니까? – vikingosegundo

+0

@vikingosegundo UILabel에 URL 만 포함되었다고 가정합니다. UILabel 뷰 내에서 시작하고 끝나는 동작 만 제한하도록 예제를 업데이트했습니다. –

+0

그러나 이것은 하나의 레이블에있는 다른 텍스트 사이의 하이퍼 링크에 대한 접촉을 식별하지 않습니다. 그리고 UILabel을 하위 클래스 화하는 대신 UIGestureRecognizer를 사용해야합니다. – vikingosegundo

관련 문제