【发布时间】:2018-09-08 03:46:24
【问题描述】:
在我的UITextView 子类中添加点击识别器后,我正在尝试获取被点击的字符:
var textRecognizer: UITapGestureRecognizer!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
textContainer.lineFragmentPadding = 0
textContainerInset = .zero
textRecognizer = UITapGestureRecognizer(target: self, action: #selector(textTapped))
textRecognizer.numberOfTapsRequired = 1
addGestureRecognizer(textRecognizer)
}
@objc func textTapped(recognizer: UITapGestureRecognizer) {
let location = recognizer.location(in: self)
if let cRange = characterRange(at: location) {
let cPosition = offset(from: beginningOfDocument, to: cRange.start)
let cChar = text[Range(NSRange(location: cPosition, length: 1), in: text)!]
print(cChar)
}
}
问题是,如果我的属性文本是 "Hello world\nWelcome to Stack Overflow" 并且我点击字母的左侧,例如字母 f 的左侧,那么 characterRange(at: location) 返回上一个字母 r 而不是返回 @987654327 @。
【问题讨论】:
标签: ios uitextview uigesturerecognizer uitextinput uitextposition