2016-12-02 8 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) 
    } 
} 
関連する問題