强制UITextView光标到视图的顶部

时间:2015-03-27 20:54:33

标签: ios uitextview becomefirstresponder

我有一个UITableView,它包含一系列文本输入字段,可以是UITextField或UITextView控件。选择文本输入字段时,键盘的“下一步”按钮用于循环显示字段。这一切都正常,除了一件事。当UITextView(多线)通过调用becomeFirstResponder接收焦点时,光标位于视图中的第二行,而不是第一行。这似乎是解决这个问题最常见的建议,但它在我的案例中不起作用。有什么建议?谢谢!

-(void)textViewDidBeginEditing:(UITextView *)textView
{
     [textView setSelectedRange:NSMakeRange(0, 0)];
}

也尝试了这个没有成功:

textView.selectedTextRange = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.beginningOfDocument];

1 个答案:

答案 0 :(得分:1)

似乎在调用textViewDidBeginEditing后重新定位了光标;所以你移动它然后移回去。您可以使用setSelectedRange

致电dispatch_async来解决此问题
-(void)textViewDidBeginEditing:(UITextView *)textView
{
    dispatch_async(dispatch_get_main_queue(), ^{
        textView.selectedRange = NSMakeRange(0, 0);
    });;
}

使用针对未来用户的修复程序进行更新,因为似乎另一个选项可以解决我提到的问题,即performSelectorOnMainThread并调用setCursor移动光标。

[self performSelectorOnMainThread:@selector(setCursor) withObject:nil waitUntilDone:NO];