【问题标题】:How to listen action on iOS generated action sheet如何在 iOS 生成的操作表上监听操作
【发布时间】:2013-04-19 18:37:11
【问题描述】:

在我的应用程序中,UITextView 包含一个电子邮件地址。当我触摸并按住电子邮件地址时,会弹出一个带有以下按钮的操作表:

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

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

【问题讨论】:

  • 我认为您无法拦截此操作表。正如您提到的,它是操作系统生成的操作表,因此您不能将任何对象设置为其委托。您要么保持原样,要么关闭链接检测。

标签: ios objective-c uiactionsheet


【解决方案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
    }
}

【讨论】:

    【解决方案2】:

    您必须将您的 viewController 设置为 actionSheets 委托,然后实现

    -actionSheet:clickedButtonAtIndex:
    

    然后执行您需要的操作。

    【讨论】:

    • 此委托方法未调用,因为操作表由 iOS 生成,而不是由我的应用程序生成。
    【解决方案3】:

    您需要继承 UITextView 并覆盖 -setText: 方法。在您的自定义实现中,您需要将 UIDataDetector 添加到您的子类中。

    如果您不熟悉 NSDataDetector 及其实现,请查看TTTAttributedLabel 的实现。它是 UILabel 的完整替代品,具有数据检测和非常完善的委托协议。

    你可以采用它的大部分代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多