无需用户点击 UITextView 即可调用 becomeFirstResponder

Posted

技术标签:

【中文标题】无需用户点击 UITextView 即可调用 becomeFirstResponder【英文标题】:getting becomeFirstResponder to call without user tapping UITextView 【发布时间】:2012-12-18 04:54:50 【问题描述】:

我希望键盘在某个UITextView 出现时自动出现。现在,UITextView 第一次出现时,用户必须点击它才能出现键盘。 UITextView 的后续出现会自动使键盘出现。第一次出现UITextView 时,我怎样才能做到这一点?

-(void)displayComposeScreen

    [self.nameField resignFirstResponder]; //This is a different UITextView, but my issue doesn't change whether I leave this line in or take it out

    if (!self.textView)
    
        self.textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 20, 280, 150)]; //This is the UITextView with whose appearance I want the keyboard to appear automatically.
        self.textView.font = [UIFont fontWithName:@"Helvetica Neue" size:14];
        self.textView.delegate = self;
    
    [self.textView becomeFirstResponder];
    self.textView.hidden=NO;
    if (self.ghhaiku.userIsEditing==NO)
    
         self.textView.text = @"";
    
    else
    
        self.textView.text = self.ghhaiku.text;
    
    [self.view addSubview:self.textView];

基本上,第一次调用此方法时,用户必须点击self.textView 才能出现键盘,我希望键盘在调用该方法时自动出现,就像在随后调用此方法时一样.

【问题讨论】:

【参考方案1】:

你应该放代码

[self.textView becomeFirstResponder]

您将文本视图放入控制器的视图中。

【讨论】:

【参考方案2】:

希望能帮到你

[textField performSelector:@selector(becomeFirstResponder) 
                withObject:nil 
                afterDelay:0.2f]

In ios 6, -[UITextField becomeFirstResponder] doesn't work in -viewWillAppear:(对https://***.com/users/1162777/anton的问题发表评论)

【讨论】:

【参考方案3】:

当您想激活 textView 时,请尝试以下行。

[self.textView becomeFirstResponder];

【讨论】:

该行已经在代码中——就在 self.textView 的惰性实例化之后。我应该把它放在别的地方吗? 先分配 textView 然后在你想激活 textView 时使用上面的代码行。 嗯。我希望在调用此方法时激活 textView。如果我误解了,请原谅我,但我只是尝试在viewDidLoad 中分配 textView 以便在调用此方法时它已经存在(并且我希望键盘出现),但这并没有解决问题。 使用上面的代码并在添加后尝试激活 textView 并让我知道您的反馈。【参考方案4】:
    [UIView animateWithDuration:0.0 animations:^
        [self addSubview:textview];
     completion:^(BOOL finished)
        [textview becomeFirstResponder];
    ];

【讨论】:

以上是关于无需用户点击 UITextView 即可调用 becomeFirstResponder的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextView 上点击时未调用 UICollectionView didSelectItemAtIndexPath

模仿 UITextView 的默认双击行为

无需点击图标即可打开应用程序

Flutter - 无需用户交互即可重建 GestureDetector 小部件

如何将触摸从 UITextView 传递到 UITableViewCell

SWTableviewcell - 无需滑动或选择即可调用动画方法