2013-01-20 4 views
0

일부 텍스트가 포함 된 레이블과 ScrollView에 대한 링크 ( )를 레이블에 추가하면 대리자 메서드가 호출되어 팝업 표시 및 표시됩니다 관련 정보.UIScrollView의 UILabel 하위 뷰를 firstResponder로 만들기

하지만 여기부터 문제가 시작됩니다. 링크를 제외한 다른 곳을 탭하면 팝업이 사라집니다.

UITapGestureRecognizer를 ScrollView에 추가하면 링크에 대한 대리자 메서드가 호출되지 않습니다.

레이블에 어떤 작업을해야 링크의 탭이 처리되고 ScrollView가 다른 탭을 처리합니까?

나는 그렇게했다 :

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)]; 
    [self.scrollView addGestureRecognizer:tap]; 

- (void)tapped 
{ 
    if ([self.storyText.delegate respondsToSelector:@selector(attributedLabel:shouldFollowLink:)]) 

     [self.storyText.delegate performSelector:@selector(attributedLabel:shouldFollowLink:) withObject:self.storyText]; 
} 

을 도청하는 방법 임 임 링크를 눌러 경우 검사에서 대리자가 호출하지만, 위임 못해 전화를해야합니다. someThing이 누락 되었습니까?

enter image description here

답변

0

해결! 솔루션 : 먼저 내 scrollView에 대한 사용자 지정 클래스를 만들고 UIScrollView에서 서브 클래 싱했습니다. 둘째 나는 내 사용자 지정있는 ScrollView 클래스에서

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

우선합니다. 이 방법에서는 popover를 무시하는 메서드를 호출했습니다.

하지만 중요한 부분은 popover가 표시 될 클래스의 viewWillAppear 메서드에서 사용자 지정 scrollView 클래스에 자신을 전달했습니다. 왜냐하면 그렇게하지 않으면 popover를 해제하는 방법이 작동하지 않기 때문입니다 (이 클래스의 객체가 필요합니다).

enter image description here

이 이미지

[self.scrollView initWithStoryViewController:self]; 

은 시나리오에 나는이 문제를 가지고 보여 OHAttributedLabel를 사용

0

당신은 사용자 정의 UIButtons 대신 라벨을 사용하거나 링크를 통해 분명 배경 색상으로 지정 UIButtons를 놓고이 버튼에 액션을 줄 수 있습니다.

+0

임, 그래서 나는 버튼을 사용할 수 없습니다. –

+0

레이블 위에 선명한 배경색의 사용자 지정 UIButton을 배치하고 단추에 동작을 부여하는 방법은 무엇입니까? – jjpp

+0

UILabel에서 링크를 잡으려고합니다. 링크가 동적으로 생성됩니다 (숫자를 늘릴 수 있음). 따라서 해당 링크에 버튼을 추가 할 수 없습니다. –

관련 문제