我们有个运行 5 年的 app ,有个核心业务就是考试,考试的题干和选项会有富文本,富文本 ios 端是之前同事用 swiftsoup 实现的,碰到音视频加载一张图片,然后点击图片跳转,本来这个业务一直稳定在线上,最近客户提出了个新需求,要求点击外链跳转。安卓的同事用 private fun richText(tv: RichMediaTextView?, title: String) { if (title.contains("<a") || title.contains("<img") || title.contains("<video")) { if (handle == null) { handle = ExamHandler() handle?.setUrlOnClickListener(object : ExamHandler.UrlOnClickListener { override fun urlOnClick(url: String) { val split = url.split("@") if (StringUtils.isSupportVideo(split[0]) || StringUtils.isSupportAuido(split[0])) { go2Player(split) } else { ARouter.getInstance().build(Const.PATH.ACTIVITY_BASE_BUSINESS_WEB) .withString("url", url) .navigation() } } }) } val content: CharSequence = Html.fromHtml(title, GlideHtmlImageGetter(mContext, tv), null) tv?.setText(content, handle!!, URLSpan::class.java) } else { val content: CharSequence = Html.fromHtml(title) tv?.setText(content) } }轻易就实现了,我这边本来原生控件是 label,后面改成了 textView,利用 func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {也实现了,但是因为后台用户是自由输入的,如果一旦用了 https://www.baidu.com/https://image.baidu.com/ 那我怎么也加载不了这俩链接,除了这些,我们还有其他视频播放的时候互动答题也是类似的业务,还要考虑横屏,竖屏幕。之前的业务非常乱,感觉一改就是个深坑,还有老的高度不精确的问题,本来承认这个功能做不了可能只交个过失单就行,弄出来线上 bug 就是大问题了。感觉这也不是什么大事,但是这三天就是心情不佳,烦闷反胃。 |
|