【发布时间】:2010-11-02 13:04:40
【问题描述】:
所以我想引入一个包含 UITextView 的模态视图控制器,并且我希望键盘自动弹出并且 UITextView 具有焦点。
我找到了一种方法来完成以下操作:
textView.editable = YES;
textView.editable = NO;
这对我来说似乎很老套,还有其他方法吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uikit
所以我想引入一个包含 UITextView 的模态视图控制器,并且我希望键盘自动弹出并且 UITextView 具有焦点。
我找到了一种方法来完成以下操作:
textView.editable = YES;
textView.editable = NO;
这对我来说似乎很老套,还有其他方法吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uikit
由于UITextView 继承自UIResponder(间接地,它实际上继承自UIScrollView,后者继承自UIView,然后 继承自UIResponder)您可以调用@987654326 @ 文本字段上的方法,这将使它成为第一响应者并开始编辑:
[textView becomeFirstResponder];
【讨论】:
这确实有点骇人听闻。
“有焦点”的 Cocoa Touch 术语是“第一响应者”,UITextViews 将在他们是第一响应者时显示他们的键盘。我可以想到几种使 UITextView 成为第一响应者的技术,但最简单的可能是在您的视图控制器的 viewWillAppear 或 viewDidAppear 方法中:
【讨论】:
[textView becomeFirstResponder];
【讨论】:
斯威夫特:
textView.becomeFirstResponder()
【讨论】:
当您希望在加载 ViewController 时将焦点放在特定的 TextView 上,您可以将 textView.becomeFirstResponder() 放在 ViewDidLoad 覆盖函数中,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
textView.becomeFirstResponder()
}
我发现这没有任何错误
【讨论】:
在 Xamarin 表单自定义渲染上:
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.BecomeFirstResponder();
}
}
【讨论】: