UIMenucontroller с uitextview на uitableviewcell

У меня есть UITextView внутри моего пользовательского UITableViewCell. Я использую UITextView в основном для обнаружения данных в ячейке. У меня есть собственный набор UIMenuitems для разных ячеек.

              |-------------------------------|
              |                               |
              |   |------------------|        |
              |   |                  |        |
              |   |        UITextView|        |
              |   |__________________|        |
              |                               |
              |                UITableViewCell|
              |_______________________________|

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю на область в UITextView, я не получаю никакого контроллера меню, ожидаемое поведение заключается в том, что он должен вызывать тот же контроллер меню, который определен для этого частиц UITebleViewCell.

Если я заменю UITextView на UILabel, я получу правильный контроллер меню, но потеряю возможность обнаружения данных.

Пожалуйста, направьте меня в правильном направлении, что я упускаю или что я делаю неправильно?


person Umang    schedule 18.07.2014    source источник
comment
Какое обнаружение данных вы имеете в виду?   -  person Ryan    schedule 18.07.2014
comment
Я хочу определить номер телефона, ссылку, адрес, события, поэтому я использую [_textView setDataDetectorTypes:UIDataDetectorTypeAll];   -  person Umang    schedule 18.07.2014


Ответы (1)


Вы можете использовать UITapGestureRecognizer для обнаружения прикосновения к вашему текстовому представлению.

  • Убедитесь, что userInteractionEnabled имеет значение TRUE для вашего textView.

myTextView.userInteractionEnabled = ИСТИНА;

  • Добавьте распознаватель жестов для вашего текстового представления
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTextViewTapped:)];
[myTextView addGestureRecognizer:tapGestureRecognizer];
  • Отображение контроллера меню при касании
- (void)myTextViewTapped:(id)sender {
    NSLog(@"my text view is tapped");
    // display menu now!

}
  • Если ваш контроллер меню зависит от отдельной ячейки, вы можете использовать номер строки в качестве тега вашего textView и отображать соответствующий контроллер меню.
// in your tableview cellForRowAtIndexPath method

myTextView.tag = indexPath.row;

// in your selector

UITextView *myTextView = (UITextView *)sender;
int rowNumber = myTextView.tag;
person Subhransu    schedule 18.07.2014