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控件,如何实现插入文本后将光标自动移动到行尾

Bash 快捷键

linux中的vim 编辑一行内容,如何使光标快速移动到行首和行尾以及行中间某处啊

PowerShell控制台快捷键

目录部分