因监管要求,现在APP登录时需要让用户同意《隐私条款》《用户协议》
之类的,点击界面上相应位置会去到相应详情界面。
这是一个非常常规的需求,对于大多数应用而言,使用UILabel
+UIButton
就完事儿了。
要考虑小屏手机换行的事情?没问题,一行绰绰有余!
那再加上本地化呢?正经设计谁考虑本地化呀?!
如此,想要使用控件自动控制内容换行,且能实现点击跳转,就只能靠UITextView
超链接了。
首先,使UITextView不可编辑isEditable = false
,并且isSelectable = true
,否则,UITextView
将不会响应超链接点击事件。
可以通过重载canPerformAction
方法来禁用菜单:
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
然后使用代理方法来禁用选中:
func textViewDidChangeSelection(_ textView: UITextView) {
textView.selectedRange = NSRange(location: 0, length: 0)
}
但是这样仍然无法避免放大镜效果。
我们知道选中、菜单以及放大镜效果都是在长按UITextView时展示,那么直接禁用UITextView的长按手势:
override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
if gestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) {
gestureRecognizer.isEnabled = false
}
super.addGestureRecognizer(gestureRecognizer)
}