有没有办法在UITextField
没有键盘动画的情况下成为第一响应者?也就是说,让它只出现键盘?
基本上,我在具有 的 上推一秒钟UIViewController
,UIViewController
当UITextField
第二个视图控制器从堆栈中弹出时,我希望UITextField
立即具有第一响应者状态,以便当第二个视图控制器被弹出时,用户永远不会注意到文本字段不是第一响应者。
现在我有它,所以当它弹出时,键盘会在屏幕上显示动画,但我不希望看到它。
有任何想法吗?
有没有办法在UITextField
没有键盘动画的情况下成为第一响应者?也就是说,让它只出现键盘?
基本上,我在具有 的 上推一秒钟UIViewController
,UIViewController
当UITextField
第二个视图控制器从堆栈中弹出时,我希望UITextField
立即具有第一响应者状态,以便当第二个视图控制器被弹出时,用户永远不会注意到文本字段不是第一响应者。
现在我有它,所以当它弹出时,键盘会在屏幕上显示动画,但我不希望看到它。
有任何想法吗?
您可以像这样使用 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()
只需将其设置为第一响应者,-viewDidAppear
以使用户永远不会注意到该字段已丢失其状态。
-(void)viewWillAppear:(BOOL)animated {
if ([self isViewLoaded] && self.textField)
[self.textField becomeFirstResponder];
[super viewWillAppear:animated];
}
如果您愿意,我已经使用此代码在Dropbox上放置了一个简短的示例项目。
我不确定您使用的是哪个 iOS 版本,或者您在什么时候调用becomeFirstResponder
iOS5 /iOS6 的调用似乎按您希望的方式工作:[textFieldReference becomeFirstResponder]
viewWillAppear:
它在视图控制器显示它的视图之前被调用(如果你不手动处理视图控制器层次结构)并且一旦它出现在导航控制器中,键盘就已经出现并且文本字段具有焦点。
也就是说,我听说没有公开的方式可以指定键盘外观样式。
当第一次提出问题时,我认为这不是一个选项,但UIView.performWithoutAnimation
可以正常工作。
UIView.performWithoutAnimation {
self.composeView.focusTextField()
}