如何以编程方式提供UITextView焦点?

时间:2009-06-12 17:33:30

标签: ios objective-c cocoa-touch uikit

所以我想引入一个带有UITextView的模态视图控制器,我希望键盘自动弹出,UITextView有焦点。

通过执行以下操作,我找到了实现此目的的方法:

textView.editable = YES;
textView.editable = NO;

这对我来说似乎很难看,还有另外一种方法吗?

6 个答案:

答案 0 :(得分:155)

由于UITextView继承自UIResponder(间接地,它实际上继承自UIScrollView,其继承自UIView 然后继承自UIResponder 1}})您可以在文本字段上调用-becomeFirstResponder方法,这将使其成为第一个响应者并开始编辑:

[textView becomeFirstResponder];

答案 1 :(得分:18)

夫特:

textView.becomeFirstResponder()

答案 2 :(得分:11)

这确实有点像黑客。

“有焦点”的Cocoa Touch术语是“第一响应者”,UITextView将在第一个响应者时显示他们的键盘。我可以想到几种技术让UITextView成为第一个响应者,但最简单的可能是你的视图控制器的viewWillAppear或viewDidAppear方法:

- (void)viewWillAppear:(BOOL)animated
{

    [myTextView becomeFirstResponder];

    [super viewWillAppear:animated];
}

答案 3 :(得分:7)

[textView becomeFirstResponder];

答案 4 :(得分:0)

当您希望焦点在加载ViewController时成为特定的TextView时,您可以将textView.becomeFirstResponder()放在ViewDidLoad overrode func中,如下所示:

 override func viewDidLoad() {
    super.viewDidLoad()

textView.becomeFirstResponder()

}

我发现这没有任何错误

答案 5 :(得分:0)

在Xamarin Forms Custom Render上:

   protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            Control.BecomeFirstResponder();
        }
    }