将TapGestureRecognizer添加到UITextView

时间:2011-06-06 08:04:47

标签: iphone uitextview tap

我想在我的 UITextView 中添加一个* UITapGestureRecognize * r,因为我想关闭 TextView 所在的“Popup”。所以我想,那个当点击T * extView *时,会调用 Popup 类的“隐藏”方法。我尝试过如下,但由于某些原因它无法正常工作:

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

我也不想为它创建一个子类,因为我需要调用“parent”-method“hide”。

也许你现在是解决这个问题的好方法 提前谢谢。

3 个答案:

答案 0 :(得分: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...

}

修改

我可以考虑另外两种方法:

  1. 您可以将textView包装在UIView中,并将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
         }
     }
    
  3. 祝你好运

答案 1 :(得分:0)

您是否尝试使用show方法进行NSLog?或者你甚至宣布并编写方法“show”?它应该工作,这就是我在文本视图中所做的。

P.S在添加textview后不要忘记释放你的手势实例(gr):D

答案 2 :(得分:0)

我遇到了很大的问题,但我有一个愚蠢的问题,在可视化编辑器中关闭了用户交互。希望这有助于某人:)