2014-01-29 5 views
1

탭 제스처 인식기가 연결된 텍스트보기가 비활성화되었습니다. 문제는이 제스처 인식기가 자동 감지 된 URL (텍스트보기에 데이터 감지기가 켜져 있음)에서 생성 된 탭을 포함하여 모든 탭을 가로 채는 것입니다. 어떤 일이 일어나지 않도록하는 방법이 있습니까? 사용자가 URL을 탭하면 텍스트보기 (Safari에서 여는 중)로 처리되며 사용자가 다른 곳을 두드리는 경우 제스처 인식기가 호출됩니다.탭 제스처 인식기가 UITextView의 URL 탭과 간섭합니다.

답변

1

가장 좋은 방법은 데이터 탐지기에서 사용하는 제스처 인식기에 액세스 한 다음 (해당 탭 유도기가 위임자의 gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 등을 사용하여 우선 순위보다 낮은 우선 순위를 지정하도록 지정하는 것입니다.) 생각하지 않습니다. 이것은 가능합니다 (내가 틀린 사람이라면 누구나 자유롭게 여기에서 나를 바로 잡을 수 있습니다.).

대신 텍스트보기에 대리인을 추가하고 textView:shouldInteractWithURL:inRange:이 제스처 인식기의 활성 기간 중에 호출되었는지 확인한 다음 UITextView으로 처리하지 않을 때만 처리기를 실행하십시오.

+0

:하지만 URL에 긴 언론이 될 때 후에 만라고 강조 표시됩니다. 사용자가 URL을 빠르게 탭하면이 메서드는 호출되지 않습니다. URL을 길게 열려면 '기능'입니다. 그렇지 않으면 편집을 시작합니다. 사실이 행동을 선호하기 시작했습니다. 긴 URL을 열지 않고 편집하려는 경우에 유용 할 수 있습니다. 어쨌든 고맙습니다. :) – Indoor

0

텍스트보기가 다른보기의 하위보기가 아닌지 확인하십시오. 그것은 서브 뷰 인 경우 , 그래서 상위 뷰에 대한 에게 UITextViewDelegate을 추가 한 다음 있는 viewDidLoad이 하나를 추가 : 나는 shouldInteractWithURL을 시도

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    yourTextview.delegate = self; 
    yourTextview.editable = NO; 
    yourTextview.selectable = YES; 
    ... 
} 
관련 문제