iOS中的坑:URL不识别##

it2024-04-04  87

坑: iOS 中对字符串进行 parser 成 URL 时,2个及以上的 # 会解析为空,如图:

image

图上URL前面部分完全相同,只是后面 # 个数不同;

一般而言,问题不大,因为 string 解析成 nil 的 URL,常见的问题是不跳转、网页不加载等。

但是如果遇到系统内部调用 LSAppLink 的情况,就会出现崩溃。

场景: 富文本中设置 Link 的 URL 包含上述情况时,点击(长按) Link 会进行 URL 的跳转,此时因为 String.length 不为空,最后进入到了 LSAppLink 的调用流程。估计系统内部没有对 URL 是否为 nil 进行判断,最后崩溃:

image

解决方案为,text 相关类中,添加 URLInteract 相关的代理方法,在里面进行判断,比如用 textView 展示富文本时的结局方案如下:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { NSLog(@"url:%@",URL); if (URL.absoluteString.length) { return YES; } return NO; }
最新回复(0)