成为第一个响应,而不动画(Become first responder without animat

2019-07-30 22:11发布

有没有办法为UITextField ,成为第一个响应者没有键盘的动画? 也就是说,使它使得键盘刚刚出现?

基本上,我推着第二UIViewControllerUIViewController具有UITextField ,和当第二视图控制器被弹出堆栈,我想UITextField立即拥有第一个响应状态,以便在第二视图控制器被弹出时,用户永远不会注意到文本字段不是第一个响应者。

现在我有这样,当它弹出,键盘动画在屏幕,但我不希望被看到。

有任何想法吗?

Answer 1:

您可以使用一个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()


Answer 2:

只需将它作为第一个响应-viewDidAppear使用户不会注意到失去领域的地位。

-(void)viewWillAppear:(BOOL)animated {
    if ([self isViewLoaded] && self.textField)
        [self.textField becomeFirstResponder];
        [super viewWillAppear:animated];
}

我已经把一个简短的样本项目最多的Dropbox使用此代码,如果你喜欢它。



Answer 3:

我,MOT知道什么IOS版本你使用或在什么时候你叫becomeFirstResponder调用[textFieldReference becomeFirstResponder]viewWillAppear:对iOS5的/ iOS6的似乎工作只是你想要的方式运行:

它被称为之前视图控制器将显示它的观点(这就是如果你不手动处理视图控制器层次),一旦它出现在导航控制器键盘已经被提出并文本字段具有焦点。

这就是说,有可能听说过,将允许指定的键盘外观风格没有公开的方式。



文章来源: Become first responder without animation