UITextViewdelegate url点击代理不走的解决方法

请不要把textView的selectable设置为NO!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 `UITextViewDelegate` 中的 `textViewDidChangeSelection` 方法来实现通过选择器(`UIPickerView`)选择颜色和字体大小后,选中文本后文字和字体颜色的改变。 首先,您需要创建一个 `UIPickerView` 并将其作为 `UITextView` 的 inputView,以便用户可以在选择器中选择颜色和字体大小。具体做法如下: ```swift // 创建一个 UIPickerView let pickerView = UIPickerView() pickerView.delegate = self pickerView.dataSource = self // 将 pickerView 设置为 textView 的 inputView yourTextView.inputView = pickerView ``` 然后,您需要在 `UITextViewDelegate` 中的 `textViewDidChangeSelection` 方法中获取所选文本的范围,并将选定的文本的颜色和字体属性设置为选择器中选择的值。具体实现代码如下: ```swift func textViewDidChangeSelection(_ textView: UITextView) { let selectedRange = textView.selectedRange let attributedText = NSMutableAttributedString(attributedString: textView.attributedText) attributedText.addAttribute(.foregroundColor, value: selectedColor, range: selectedRange) attributedText.addAttribute(.font, value: selectedFont, range: selectedRange) textView.attributedText = attributedText } ``` 其中,`selectedColor` 和 `selectedFont` 分别是从选择器中获取的颜色和字体大小。 最后,您需要实现 `UIPickerViewDelegate` 和 `UIPickerViewDataSource` 协议中的方法来设置选择器的选项和响应选择器的选择事件。具体实现代码如下: ```swift // 实现 UIPickerViewDataSource 协议中的方法 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 2 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { if component == 0 { return colors.count } else { return fontSizes.count } } // 实现 UIPickerViewDelegate 协议中的方法 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if component == 0 { return colors[row] } else { return fontSizes[row] } } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if component == 0 { selectedColor = UIColor(named: colors[row]) ?? .black } else { selectedFont = UIFont.systemFont(ofSize: CGFloat(fontSizes[row])) ?? UIFont.systemFont(ofSize: 16) } } ``` 其中,`colors` 和 `fontSizes` 是您自定义的颜色和字体大小选项数组,`selectedColor` 和 `selectedFont` 是您用来存储所选颜色和字体大小的变量。 这样,当用户选中文本后,就可以通过选择器来改变选中文本的颜色和字体大小了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值