JOG*_*JOG 14 becomefirstresponder ios
我有一个TextView应该按下按钮时显示,并让用户通过键盘输入文本.
- (IBAction) changeName {
changeNameBtn.hidden = YES;
backBtn.hidden = YES;
usernameLabel.hidden = NO;
inputTextField.hidden = NO;
[inputTextField becomeFirstResponder]; // to show keyboard
}
Run Code Online (Sandbox Code Playgroud)
这适用于我们大多数人.
但键盘没有显示我的一些测试人员,位于地理位置偏远的位置.怎么麻烦拍这个?这可能是我们设备行为不同的原因?它对我和其他人都很好.我们都使用相同的设备(iPod,iOS 4.1 - 5.1).
我试过的第一件事不起作用:
我猜测inputTextField在某种程度上没有及时显现,在becomeFirstResponder被解雇之前,所以我添加了setNeedsDisplay因为我认为会强制更新.
[inputTextField setNeedsDisplay];
[inputTextField becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)
我试过的第二件事不起作用:
if([inputTextField canBecomeFirstResponder]){
[inputTextField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
我尝试的第三件事是解决方法,要求不幸的用户按下该字段:
- (IBAction) inputTextFieldTouch {
[inputTextField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
这种解决方法有效,但必须有更好的方法.请告诉我我做错了什么!:)以及如何处理这样的问题而不能自己复制?
jes*_*ang 26
我becomeFirstResponder后来通过这条线打电话:
[self.searchBar performSelector:@selector(becomeFirstResponder)
withObject:nil
afterDelay:0.1f];
Run Code Online (Sandbox Code Playgroud)
它对我有用.希望这有帮助.
当您尝试将其作为第一个响应者时,textview尚未完成绘制.
您可以尝试设置动画的外观并在完成块中设置第一个响应者.
[UIView animateWithDuration:0.0 animations:^{
[view addSubview:textView];
} completion:^(BOOL finished){
[textView becomeFirstResponder];
}];
Run Code Online (Sandbox Code Playgroud)
从 iOS8 开始,在 UITextView 上调用 becomeFirstResponder 不会在 iOS 模拟器上为我显示键盘,但它会在真实设备上显示。因此,请务必使用实际设备进行检查。但这不会发生在 iOS7 上。
| 归档时间: |
|
| 查看次数: |
13092 次 |
| 最近记录: |