3

TextViewが入っている「Popup」を閉じたいので、 *UITapGestureRecognize*r を UITextView に追加したいので、 T*extView のときにPopupクラスのメソッド「hide」が呼び出されるようにしたい*がタップされます。次のように試してみましたが、何らかの理由で機能しません。

UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(show)];
[gr setNumberOfTapsRequired:1];
[viewText addGestureRecognizer:gr];

また、「親」メソッド「非表示」を呼び出す必要があるため、サブクラスを作成したくありません。

多分あなたはその問題の良い解決策です。
前もって感謝します。

4

3 に答える 3

2

UITapGestureRecognizer を使用するのではなく、UITextFieldDelegate を使用してください。

ここでそれについて読むことができます:

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html%23//apple_ref/doc/uid/TP40006897

基本的に、UITextViewDelegate を .h ファイルに追加する必要があります。

@interface MyViewController : UIViewController<UITextViewDelegate>

次に、コントローラーをデリゲートとして割り当てます。

viewText.delegate =self;

委任方法のいずれかを使用してください。

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{

   // Do what you need to do...

}

編集

さて、私は2つの追加のアプローチについて考えることができます:

  1. UIView 内に textView をラップし、UITapGestureRecognizer をビューに追加できます。
  2. 使用できます:

     -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
         UITouch *touch = [touches anyObject];
         CGPoint location = [touch locationInView:textView];
    
         //Checks if the tap was inside the textview bounds
         if (CGRectContainsPoint(textView.bounds, location)){
             //do something
         }
     }
    

幸運を

于 2011-06-06T08:13:52.227 に答える
0

これも機能させるのに大きな問題がありましたが、1つのばかげた問題がありました。ビジュアルエディターでユーザーの操作がオフになっていました。これが誰かを助けることを願っています:)

于 2011-11-22T02:37:03.397 に答える
0

show メソッドで NSLog を試みましたか? または、メソッド「show」を宣言して記述しましたか?それはうまくいくはずです。それが私のテキストビューでのやり方です。

PSは、テキストビューを追加した後、ジェスチャインスタンス(gr)を解放することを忘れないでください:D

于 2011-07-27T20:22:14.170 に答える