2013-04-18 17 views
0

在我的应用程序中有UITextView包含电子邮件地址。当我触摸并按住电子邮件地址,然后动作片弹出,上面有以下按钮:如何在iOS生成的操作表上收听操作

  • “新信息”
  • “添加到联系人”

如何在“新消息”按钮上单击执行自定义操作?

+0

我不认为你可以截取这个动作表。正如你提到它是一个OS生成的操作表,所以你不能将任何对象设置为它的委托。您要么保持原样,要么关闭链接检测。 –

回答

1

你必须设置你的viewController作为actionSheets委托,然后实现

-actionSheet:clickedButtonAtIndex: 

然后执行所需的操作。

+0

此代理方法不会调用,因为iOS生成的操作表不是由我的应用程序生成的。 – Ram

1

首先你实现你的.h文件中UIActionSheetDelegate然后再去做..

- (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替代数据检测和一个非常发达的委托协议。

你可以采用它的很多代码。