UITextview 光标移动到行尾
Posted
技术标签:
【中文标题】UITextview 光标移动到行尾【英文标题】:UITextview cursor moves to the end of the line 【发布时间】:2014-02-22 11:20:14 【问题描述】:如果我在UITextview
中选择一个位置,它会将光标放在文本(内容)的末尾。
我无法获取用户点击文本视图的当前位置。
点击前,当我点击textview中的6时
单击后,光标移动到文本视图的末尾并显示如下
【问题讨论】:
你能显示代码吗? 您是否尝试获取光标位置以进行触摸?或者问题是触摸后光标移动到末尾?请更具体。 @reecon 不,我没有使用任何触摸位置 -(void)textViewDidBeginEditing:(UITextView *)textView [NotesTxtView setFrame:CGRectMake(NotesTxtView.frame.origin.x, NotesTxtView.frame.origin.y, NotesTxtView.frame.size.width, 150)];我在 didbeginediting 中改变 textview 的高度。是这个问题吗? 【参考方案1】:要知道触摸事件发生的位置,请在 viewController 中实现此方法。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
现在将 textView 作为触摸对象并将光标放在那里.. 我只是在这里给你一个提示.. 尝试找到解决方案.. 如果有任何问题,请告诉我.. :)
更新:
如果你的 textView 是可编辑的,你不需要在那里写任何代码。无论你在哪里点击,光标都会自动出现。
是的,您正在编写的更改 textView 高度的代码正在影响您的点击和光标位置..
点击后,textView 将获得触摸矩形,然后调用您的方法。因此,当光标出现时,它出现在相同的矩形但相对于 textView 的不同位置。如果需要更多信息,请告诉我..
您可以在编辑完成后调整 textView 的大小。这将解决您的问题... :)
【讨论】:
-(void)textViewDidBeginEditing:(UITextView *)textView [NotesTxtView setFrame:CGRectMake(NotesTxtView.frame.origin.x, NotesTxtView.frame.origin.y, NotesTxtView.frame.size.width, 150)];我在 didbeginediting 中改变 textview 的高度。是这个问题吗? 对不起,伙计们,.. 我犯了一个错误,.. 我写了一个方法,将 textview 滚动到光标点,让它自动移动到那个位置。【参考方案2】:如果您知道光标的索引,您可以调用:
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];
【讨论】:
以上是关于UITextview 光标移动到行尾的主要内容,如果未能解决你的问题,请参考以下文章
Intellij IDEA 移动光标到行尾或行首的快捷键是啥?
python tkinter的Text控件,如何实现插入文本后将光标自动移动到行尾