在swift中的UITextField中的当前选择或光标位置插入属性字符串NSAttributedString

时间:2016-03-24 19:43:55

标签: ios swift uitextfield nsattributedstring

我在iOS上使用swift。我试图在当前光标位置插入NSAttributedString或在UITextField中选择。

我在UITextFieldDelegate上使用函数shouldChangeCharactersInRange来管理插入,删除,复制和粘贴文本的不同情况。那部分效果很好。

如果我将UIPasteboard与标准字符串一起使用,则调用shouldChangeCharactersInRange并正常工作。我想对属性字符串做同样的事情。 是否有另一种方法可以通过直接在UITextField上调用粘贴选择器来完成此操作?还有其他方法吗?

我知道我可以保存粘贴板项目并恢复它们以获得良好的用户体验。这不是问题的关键。

由于

func insertWord(word: NSAttributedString) {
    // I really want to copy paste the attributed string
    UIPasteboard.generalPasteboard().string = word.string
    myTextField.paste(self)
}

1 个答案:

答案 0 :(得分:0)

通过粘贴板尝试假装系统为您执行此操作并不是一个成功的解决方案。

UITextField是UITextInput的子类。您应该能够使用该事实来获取所选的文本范围。从那里,您应该能够从文本字段中获取属性字符串,并使用新的属性文本替换选择范围,并将生成的属性字符串设置回文本字段。