强制 UITextView 光标到视图的顶部
Force UITextView cursor to the top of the view
我有一个包含一系列文本输入字段的 UITableView,可以是 UITextField 或 UITextView 控件。选择文本输入字段时,键盘的 'Next' 按钮用于循环显示字段。除了一件事,这一切都正常工作。当 UITextView(多行)通过调用 becomeFirstResponder 接收焦点时,光标位于视图中的第二行,而不是第一行。这似乎是解决该问题的最常见建议,但在我的情况下不起作用。有什么建议么?谢谢!
-(void)textViewDidBeginEditing:(UITextView *)textView
{
[textView setSelectedRange:NSMakeRange(0, 0)];
}
也试过这个没有成功:
textView.selectedTextRange = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.beginningOfDocument];
调用textViewDidBeginEditing
后,光标似乎重新定位了;所以你移动它,它又被移回去。您可以通过使用 dispatch_async
:
调用 setSelectedRange
来解决这个问题
-(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];
我有一个包含一系列文本输入字段的 UITableView,可以是 UITextField 或 UITextView 控件。选择文本输入字段时,键盘的 'Next' 按钮用于循环显示字段。除了一件事,这一切都正常工作。当 UITextView(多行)通过调用 becomeFirstResponder 接收焦点时,光标位于视图中的第二行,而不是第一行。这似乎是解决该问题的最常见建议,但在我的情况下不起作用。有什么建议么?谢谢!
-(void)textViewDidBeginEditing:(UITextView *)textView
{
[textView setSelectedRange:NSMakeRange(0, 0)];
}
也试过这个没有成功:
textView.selectedTextRange = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.beginningOfDocument];
调用textViewDidBeginEditing
后,光标似乎重新定位了;所以你移动它,它又被移回去。您可以通过使用 dispatch_async
:
setSelectedRange
来解决这个问题
-(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];