当前位置: 首页 > 知识库问答 >
问题:

UIView通过uitextfield键盘自动移动

淳于慎之
2023-03-14

所以我手头有一个非常奇怪的问题,数小时的搜索没有提供任何信息。

我有一个包含uitextfield的uiview。现在,该视图最初位于可见屏幕之外,坐标为x=-500,y=-500。

然而,在响应按钮按下此视图动画和移动到屏幕的中心。

现在,每当我点击作为此视图子视图的uitextfield时。此视图会在屏幕外移动回其原始坐标。

我已经疯狂地检查了我的代码,一旦它进入,就没有任何东西会再次将视图移到外面。如果能帮助解释这种非常陌生的行为,我们将不胜感激。

此代码将视图移动到屏幕上

- (IBAction)Register:(id)sender {
//(self.view.frame.size.width/2)-(self.SignUp_Screen.frame.size.width/2);
//self.login_Screen.hidden = YES;
self.blurView.hidden = NO;
//self.SignUp_Screen.layer.zPosition = 5;
NSLog(@"Register");
self.SignUp_Screen.hidden = NO;

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        self.SignUp_Screen.frame = CGRectMake(35, 50,self.SignUp_Screen.frame.size.width , self.SignUp_Screen.frame.size.height);
} completion:^(BOOL finished) {

}];
}

这些是textfield的委托方法

-(void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"TextFieldEndEditing");
    [textField resignFirstResponder];
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"textFieldShouldReturn");
    [textField resignFirstResponder];
    return YES;
}

共有3个答案

牧信厚
2023-03-14

我解决这个问题的方法是将一个IBOutlet链接到我想要更改的约束,然后设置它的常量值的动画。

. h

@interface ViewController : UIViewController {
    IBOutlet NSLayoutConstraint *constraintHandle;
}

. m

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
    constraintHandle.constant = self.view.center.x;
    [SignUp_Screen layoutIfNeeded];
} completion:^(BOOL finished) {

}];

不要忘记将IBOutlet链接到故事板或xib中的约束。

拓拔曦
2023-03-14

如果您使用自动布局,则不应修改框架。您应该通过动画约束的常量来动画视图。例如:

NSLayoutConstraint *viewY; //constraint from superview top to view top

viewY.constant = 100;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:0.3f animations:^{
    [self.view layoutIfNeeded];
}];
鱼志学
2023-03-14

正如Wezly所暗示的那样,如果您使用的是autolayout,则不再直接修改框架。那是旧世界。您希望为约束设置一个出口/属性并设置其动画。

[UIView animateWithDuration:0.25
                 animations:^{
                   SignUp_Screen.centerXConstraint.constant = ...;
                   SignUp_Screen.centerYConstraint.constant = ...;
                   [SignUp_Screen layoutIfNeeded];
 }];

有关更多详细信息,请参阅此处和此处。

 类似资料:
  • 问题内容: 当用户在inputAccessoryView中点击“附加”按钮时,我想通过键盘创建一个简单的视图。像这样: 有简单的方法吗?或者我应该创建我的自定义键盘? 问题答案: 您可以将该新子视图添加到您的应用程序窗口。

  • 我已经在NSNotificationCenter中注册了两个观察员,keyboardWillShow:和keyboardWillHide: 在这两种方法中,当我尝试设置包含UITextView的UIView的动画时,它会跳到我尝试设置动画的帧,然后再设置回原始位置的动画。我在touchesbearth方法中尝试了相同的动画代码来测试它,它在那里工作得很好(设置新帧的动画,而不是跳回原始位置)。 我

  • 问题内容: 我试图弄清楚当用户将文本字段留空时如何使文本字段在按下按钮时摇动。 我目前有以下代码在工作: 但我认为,仅将文本字段摇动作为警报会更具吸引力。 我找不到任何可以使文本字段动起来的东西。 有任何想法吗? 谢谢! 问题答案: 您可以更改和并调整它。这就是我在代码中使用的。改变和将改变摇动中移动的距离。

  • 我正在使用自定义底部导航栏。因此,每当我关注编辑文本字段时,底部视图就会与键盘一起出现。 我已尝试更改清单中的和。它可以工作,但使用时滚动不起作用。 下面是java代码,这是底部导航的单击操作。它与其他三项相似。 }

  • 问题内容: 请向我解释有关软键盘的问题。例如,我的活动,对话框片段或片段活动(无论如何)上都有一个EditText。这里是: 当它第一次显示时,我没有看到软键盘,必须按下editText才能获得焦点,然后出现键盘。另一个活动有所不同,当它出现在屏幕上时,将在没有任何帮助的情况下加载键盘。我认为 表示EditText将被聚焦并且键盘将出现,但是我错了。 我应该如何管理哪个组件将获得焦点,键盘将 自动

  • 问题内容: 我有个简短的脚本,人们不断告诉我,我需要使用Key绑定来移动Jlabel,但我不知道该怎么做。没有人对如何以不使用键侦听器的方式实现键绑定有任何想法,或者如果添加按钮会出现问题? 问题答案: 与大多数事情一样,开始看看教程“ 如何使用键绑定”,几乎所有答案都将基于这些内容。 您可以做这样简单的事情… 正如我反复告诉您或您的同班同学一样,您不应该以这种方式使用组件。相反,您应该遵循自定义