2011-06-06 1 views
3

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

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

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

Возможно, теперь вы являетесь хорошим решением этой проблемы.
Спасибо заранее.

ответ

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. Вы можете обернуть 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 
        } 
    } 
    

Успехов

+0

Привет, спасибо за ответ, но он не работает. Если я коснусь TextView, метод-делегат textViewShouldBeginEditing не будет вызван (я добавил NSLog к нему). Существует не что-то вроде textViewTouchesEndes или что-то в этом роде, не так ли? –

+0

попробуйте установить [textView seteditable: yes]; ? – shannoga

+0

Хм, не работает и не нужен (его нельзя редактировать). Разве нет способа заставить GestureRecognizer работать? –

0

Вы пытались NSLog на шоу метода? или вы даже заявляете и пишите метод «показать»? Он должен работать, и именно так я и сделал свое текстовое представление.

PS не забудьте освободить свой жест экземпляр (гр) после того, как вы добавите на TextView: D

0

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