2016-12-02 3 views
2

UItextView에서 길게 누르기를 비활성화하는 것에 관한 많은 게시물을 보았지만 같은 프로세스가 UITextField 및 UISearchBar에서 작동하지 않습니다.UITextField 및 UISearchBar에서 길게 누르는 제스처 인식기를 비활성화하는 방법?

긴 언론에서 돋보기를 피할 수 있도록 UITextField 및 UISearchBar를 길게 누르는 것을 비활성화하는 방법이 있습니까?

이미 "Disable Magnifying Glass in UITextField"을 확인했지만 실제로는 돋보기를 사용 중지하지 않았습니다. 그냥 텍스트 사이에 커서 이동을 허용하지 않습니다. 여전히 돋보기를 표시합니다.

롱 프레스를 사용하지 않으려면 - 돋보기로 직면하고있는 Problem을 피하십시오. 나는 그것을 지금 무능하게하고 싶다. 이 문제를 해결할 수있게되면 다시 사용할 수있게 될 것입니다.

+2

볼이 http://stackoverflow.com/questions/866200/disable-magnifying-glass-in -uitextfield –

+0

http://stackoverflow.com/questions/10640781/disable-magnifying-glass-in-uitextview – Venkat

+0

이 스레드에서 주어진 @Venkat 응답은 사과 승인 프로세스에서 실패한 것입니다. 자사의 개인 API를 사용합니다. – Darshana

답변

1

당신은 모든 길게 누르면 제스처에

for (UIGestureRecognizer *recognizer in textView.gestureRecognizers) { 
    if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){ 
    recognizer.enabled = NO; 
    } 
} 

또는

대리자 메서드를 구축 비활성화하는 다음과 같은 시도 할 수 있습니다 : -

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
return NO; 
} 
+0

shouldChangeCharactersInRange에서 NO를 반환하면 텍스트 필드에서 편집 할 수 없습니다. – Darshana

+0

편집이 필요한 경우 첫 번째 방법으로 길게 눌러 제스처를 사용하지 않도록 설정하십시오. –

+0

길게 눌러 제스처를 제거하면 TextField에서는 작동하지만 UISearchbar에서는 작동하지 않습니다. – Darshana

0

한 좋은 깨끗한 방법이해야 할이가 UITextField에 대한 사용자 정의 클래스를 만들 수 있으며 사용자 정의 클래스에서 확대보기를 표시하는 길게 누르는 제스처를 재정의 할 수 있습니다. 이 사용자 정의 클래스는 테스트 필드의 확대보기를 표시하지 않으려는 모든 장소에서 사용할 수 있습니다. 그냥 스위프트 4 UITextField 클래스

class CustomTextView: UITextView { 

    override func addGestureRecognizer(gestureRecognizer: UIGestureRecognizer) { 
     if (gestureRecognizer.isKindOfClass(UILongPressGestureRecognizer)) { 
      gestureRecognizer.enabled = false; 
     } 
     super.addGestureRecognizer(gestureRecognizer) 
     return 
    } 
} 
2

@Neeraj 대답 대신에 클래스 아래 사용

class CustomTextView: UITextView { 

    override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) { 

    if gestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) { 
       gestureRecognizer.isEnabled = false 
    } 
    return super.addGestureRecognizer(gestureRecognizer) 
    } 
} 
관련 문제