无需用户点击 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
Flutter - 无需用户交互即可重建 GestureDetector 小部件