带有检测电话号码IOS 9的TextView出错

时间:2015-09-18 13:28:19

标签: uitextview

我在运行iOS 9的iPod Touch上测试我的应用程序(在iOS 8.4上,它正在用于其他功能:FaceTime,复制到联系人等)。我有一个带有电话号码检测的textview,我收到以下错误:

  

警告:尝试出现< _UIRotatingAlertController:0x16250e00>在谁的视图不在窗口层次结构!

     

断言失败 - [UITextView startInteractionWithLinkAtPoint:],/ BuildRoot / Library / Cache / com.apple.xbs / Source / UIKit / UIKit-3505.16 / UITextView_LinkInteraction.m:377

对此有任何解决方法吗?

2 个答案:

答案 0 :(得分:2)

不是一个完美的解决方案,但非常简单,可能会帮助绝望的开发人员:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    [[UIApplication sharedApplication] openURL:URL];

    return NO;
}

长按会丢失复制,打开网址,取消弹出框,但您应该至少能够像以前一样打开网址。在iOS 9中,这仍然会在您的应用程序中打开标准URL的浏览器窗口(这很不错)。

这似乎是一个Apple bug(已发布到雷达)。

我们在尝试在模态视图中打开链接时看到了非常类似的错误,因为Apple正在尝试显示新的模态警报视图。在模态视图之外,数据检测在iOS 9中运行得很好。

答案 1 :(得分:1)

这看起来非常类似于我们最近为PSPDFKit修复的错误,当rootViewController已经呈现另一个控制器时,展示工作表不起作用。 (您的rootViewController可能未设置吗?)

您可以在此处阅读源代码。这可能有助于您找出问题所在:

https://gist.github.com/steipete/b00fc02aa9f1c66c11d0f996b1ba1265

请尽快rdar://26295020这样就可以及时解决iOS 10的问题。(该漏洞自iOS 8开始存在,并首次在iOS 8b5上报告。)