2013-04-18 2 views
0

В моем приложении есть UITextView, содержащий адрес электронной почты. Когда я трогать и держать на адрес электронной почты, затем лист действий появляется со следующими кнопками на нем:Как прослушивать действие на созданном пользователем лист действий iOS

  • «Новое сообщение»
  • «Добавить в контакт»
  • т.д.

Как выполнить настраиваемое действие при нажатии кнопки «Новое сообщение»?

+0

Я не думаю, что вы можете перехватить этот лист действий. Как вы упомянули, это созданный OS лист действий, поэтому вы не можете установить какой-либо из ваших объектов в качестве своего делегата. У вас либо есть, либо есть, либо отключить обнаружение ссылок. –

ответ

1

Вы должны установить ViewController в качестве делегата actionSheets, а затем реализовать

-actionSheet:clickedButtonAtIndex: 

Затем выполнить действие, которое нужно.

+0

Этот метод делегата не вызывает, потому что лист действий, созданный iOS, а не моим приложением. – Ram

1

Сначала вы реализуете UIActionSheetDelegate в вашем .h файл, а затем сделать это ..

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 
     // here you can perform new message action 
    } 
    else 
    { 
     // here you can perform add new contact action 
    } 
} 
1

Вам нужно создать подкласс UITextView и перезаписать метод -setText:. В вашей пользовательской реализации вам нужно добавить UIDataDetector в ваш подкласс.

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

Вы можете принять в значительной степени свой код.

Смежные вопросы