Добавить TapGestureRecognizer в UITextView - PullRequest
3 голосов
/ 06 июня 2011

Я хочу добавить * UITapGestureRecognize * r к моему UITextView , потому что я хочу закрыть «всплывающее окно», в котором находится TextView . Поэтому я хочу, чтобы метод «hide» класса Popup вызывается при нажатии T * extView *. Я попробовал это следующим образом, но по какой-то причине это не работает:

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

Я также не хочу создавать для него подкласс, потому что тогда мне нужно будет вызвать "родительский" метод "hide".

Может быть, теперь у вас есть хорошее решение этой проблемы.
Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 06 июня 2011

Вы не должны использовать 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 и добавить 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
         }
     }
    

Удачи

0 голосов
/ 22 ноября 2011

У меня были серьезные проблемы с этим, но у меня была одна глупая проблема: взаимодействие с пользователем было отключено в визуальном редакторе. Надеюсь, это кому-нибудь поможет:)

0 голосов
/ 28 июля 2011

Вы пытались NSLog на метод шоу? или ты вообще заявлял и пишешь метод "покажи"? Это должно сработать, и вот как я это сделал в моем текстовом представлении.

P.S. Не забудьте освободить свой экземпляр жеста (gr) после добавления в textview: D

...