Ios 如何使UITextView的一部分不可编辑和可点击,并正确显示表情?
我的应用程序中有UITextView,它应该包含一个不可编辑且可单击的后缀categoryString,类似于。我的shouldChangeTextInRange和textViewDidChange方法如下所示:Ios 如何使UITextView的一部分不可编辑和可点击,并正确显示表情?,ios,iphone,swift,uitextview,emoji,Ios,Iphone,Swift,Uitextview,Emoji,我的应用程序中有UITextView,它应该包含一个不可编辑且可单击的后缀categoryString,类似于。我的shouldChangeTextInRange和textViewDidChange方法如下所示: func textViewDidChange(textView: UITextView) { dispatch_async(dispatch_get_main_queue(), { textView.selectedR
func textViewDidChange(textView: UITextView) {
dispatch_async(dispatch_get_main_queue(), {
textView.selectedRange = NSMakeRange(self.globalInt, 0)
//On long press backspace, something goes wrong with
//NSMutableAttributedString, so I just clear textView
//and set it's text to categoryString again:
if(!textView.text.hasSuffix(self.categoryString)){
self.globalInt = 0
self.postTextView.font = Constants.Fonts.postTextCategory
textView.text = self.categoryString
textView.selectedRange = NSMakeRange(0,0)
}
})
self.myMutableString = NSMutableAttributedString(string: self.postTextView.text, attributes: [NSFontAttributeName:Constants.Fonts.postTextCategory!])
self.myMutableString.addAttribute(NSFontAttributeName, value: Constants.Fonts.postText!, range: NSRange(location: 0, length: maxGlobalInt))
self.postTextView.attributedText = self.myMutableString
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
var tempText : NSString = text
var currentText : NSString = textView.text
var textToReturn = currentText.length + (tempText.length - range.length)
if(text == "\n"){
textView.resignFirstResponder()
}
var signatureLength = count(categoryString)
globalInt = textToReturn - signatureLength
maxGlobalInt = textToReturn - signatureLength
if(range.location > textToReturn - signatureLength){
return false
}else{
return textToReturn <= 160 + signatureLength
}
}
这就解决了我的问题,光标位置总是可以的,但我有一个新的问题-表情符号不能正确显示:
我认为这是因为表情符号的字符长度,但我不知道如何解决这个问题
第二个问题:如何使UITextView的不可编辑部分可单击?您可以使用UITapGestureRecognitiser,而不是在此处设置光标是否检查了UITextField leftView和rightView属性?使用它我们可以设置左侧或骑乘侧图像。阅读问题,他使用的是UITextView,它没有leftView/rightView属性。
dispatch_async(dispatch_get_main_queue(), {
self.globalInt = range.location + 1
if(count(text) == 0){
self.globalInt = self.globalInt - 1
}else{
self.globalInt = range.location + 1
}
})