如果我在UITextview
中选择一个位置,则将光标放在文本的末尾(内容)。
我无法获得用户点击文本视图的当前位置。
点击之前,当我在textview
中点击6时单击后,光标移动到文本视图的末尾并显示如下
答案 0 :(得分:1)
要知道触摸事件发生的位置,请在viewController中实现此方法..
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
现在将textView作为触摸对象&将光标放在那里..我只是在这里给你一个提示..试着找到解决方案..如果有任何问题,请告诉我.. :)
<强>更新强>
如果textView是可编辑的,则无需在那里编写任何代码。无论你点击哪里,光标都会自动出现。
是的,您正在编写的用于更改textView高度的代码正在影响您的点击&amp;光标位置..
点按后,textView即可获得触摸屏,&amp;然后你的方法被调用。因此,当光标出现时,它出现在相同的矩形但相对于textView的不同位置。如果需要更多信息,请告诉我..
完成编辑后,您可以调整textView的大小。这将解决您的问题...... :)
答案 1 :(得分:0)
如果你知道光标的索引,你可以调用:
NSUInteger cursorLocation = _textView.selectedRange.location;
您还可以实施 UITapGestureRecognizer 并使用以下方式处理:
- (void)textTapped:(UITapGestureRecognizer *)recognizer
{
UITextView *textView = (UITextView *)recognizer.view;
// Location of the tap in text-container coordinates
NSLayoutManager *layoutManager = textView.layoutManager;
CGPoint location = [recognizer locationInView:textView];
location.x -= textView.textContainerInset.left;
location.y -= textView.textContainerInset.top;
// Find the character that's been tapped on
NSUInteger tappedCharacterIndex;
tappedCharacterIndex = [layoutManager characterIndexForPoint:location
inTextContainer:textView.textContainer
fractionOfDistanceBetweenInsertionPoints:NULL];
}