坑:
iOS 中对字符串进行 parser 成 URL 时,2个及以上的 # 会解析为空,如图:
图上URL前面部分完全相同,只是后面 # 个数不同;
一般而言,问题不大,因为 string 解析成 nil 的 URL,常见的问题是不跳转、网页不加载等。
但是如果遇到系统内部调用 LSAppLink 的情况,就会出现崩溃。
场景:
富文本中设置 Link 的 URL 包含上述情况时,点击(长按) Link 会进行 URL 的跳转,此时因为 String.length 不为空,最后进入到了 LSAppLink 的调用流程。估计系统内部没有对 URL 是否为 nil 进行判断,最后崩溃:
解决方案为,text 相关类中,添加 URLInteract 相关的代理方法,在里面进行判断,比如用 textView 展示富文本时的结局方案如下:
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
NSLog(@"url:%@",URL);
if (URL.absoluteString.length) {
return YES;
}
return NO;
}
网友评论