1

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

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

也试过这个没有成功:

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

1 回答 1

2

似乎光标在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];
于 2015-03-27T21:43:03.307 回答