我有一个TextView,应该按下按钮显示,让用户通过键盘输入文本.
- (IBAction) changeName { changeNameBtn.hidden = YES; backBtn.hidden = YES; usernameLabel.hidden = NO; inputTextField.hidden = NO; [inputTextField becomeFirstResponder]; // to show keyboard }
这对我们大多数人来说很好.
但是键盘在一些地理位置偏远的地方没有显示给我的一些测试人员.怎么麻烦拍这个?什么可能是我们的设备的不同行为的原因?它对我和其他人都很好.我们都使用相同的设备(iPod,iOS 4.1 – 5.1).
我尝试的第一件事情没有起作用:
我猜到inputTextField在某种程度上不会及时变得可见,之后才会被启动,因此我添加了setNeedsDisplay,因为我认为这将强制更新.
[inputTextField setNeedsDisplay]; [inputTextField becomeFirstResponder];
我尝试的第二件事情没有起作用:
if([inputTextField canBecomeFirstResponder]){ [inputTextField becomeFirstResponder]; }
- (IBAction) inputTextFieldTouch { [inputTextField becomeFirstResponder]; }
解决方法
当您尝试使其成为第一反应者时,textview尚未完成绘制.
您可以尝试动画化外观,并在完成块中设置第一个响应者.
[UIView animateWithDuration:0.0 animations:^{ [view addSubview:textView]; } completion:^(BOOL finished){ [textView becomeFirstResponder]; }];