有没有办法让UITextField
成为没有键盘动画的第一响应者?也就是说,让键盘出现?
基本上,我在UIViewController
的{{1}}上推了UIViewController
,当第二个视图控制器弹出堆栈时,我想要{{1}立即拥有第一个响应者状态,以便在弹出第二个视图控制器时,用户从不会注意到文本字段不是第一个响应者。
现在我已经拥有它了,当它弹出时,键盘会动画显示屏幕,但我不希望看到它。
有什么想法吗?
答案 0 :(得分:16)
您可以使用像这样的UIView动画
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.0];
[UIView setAnimationDelay:0.0];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[textField becomeFirstResponder]; // <---- Only edit this line
[UIView commitAnimations];
这会导致键盘突然出现。
您可以使用-resignFirstResponder
斯威夫特..
UIView.beginAnimations(nil, context: nil)
UIView.setAnimationDuration(0.0)
UIView.setAnimationDelay(0.0)
someTextView.resignFirstResponder()
UIView.commitAnimations()
答案 1 :(得分:1)
只需将其设置为-viewDidAppear
中的第一个响应者,即可让用户永远不会注意到该字段已失去其状态。
-(void)viewWillAppear:(BOOL)animated {
if ([self isViewLoaded] && self.textField)
[self.textField becomeFirstResponder];
[super viewWillAppear:animated];
}
如果您愿意,我会使用此代码在dropbox上添加一个简短的示例项目。
答案 2 :(得分:0)
我确定您使用的是哪个iOS版本,或者您在什么时候致电becomeFirstResponder
在[textFieldReference becomeFirstResponder]
中为iOS5 / iOS6调用viewWillAppear:
似乎按照您希望的方式工作:
在视图控制器显示它的视图之前调用它(如果你不手动处理视图控制器层次结构),一旦它出现在导航控制器中,键盘就会出现,文本字段有焦点。
也就是说,我听不到允许指定键盘外观风格的公开方式。
答案 3 :(得分:0)
我认为第一次提出问题时这不是一个选项,但 UIView.performWithoutAnimation
可以正常工作。
UIView.performWithoutAnimation {
self.composeView.focusTextField()
}