使文本字段以动画方式从上方显示iphone sdk

使文本字段以动画方式从上方显示iphone sdk,iphone,iphone-sdk-3.0,uitextfield,Iphone,Iphone Sdk 3.0,Uitextfield,嗨,朋友,我使用的代码是 - (BOOL)textFieldShouldReturn:(UITextField *) sender { appDelegateObj.plogoImgView.hidden=NO; [sender resignFirstResponder]; if (verticalOffset!=0) { [self moveView: -verticalOffset]; verticalOffset = 0

嗨,朋友,我使用的代码是

- (BOOL)textFieldShouldReturn:(UITextField *) sender 
{
    appDelegateObj.plogoImgView.hidden=NO;

    [sender resignFirstResponder];

    if (verticalOffset!=0)
    {
        [self moveView: -verticalOffset];
        verticalOffset = 0;
    }

    return TRUE;    
}

- (void)textFieldDidBeginEditing:(UITextField *)theTextField

 {
    appDelegateObj.plogoImgView.hidden=YES;

    int wantedOffset;

    if(theTextField.tag==10)

        wantedOffset = theTextField.frame.origin.y - 50;

    else

    {
        wantedOffset = theTextField.frame.origin.y - 150;
    }

    if ( wantedOffset < 0 ) 
    { 
        wantedOffset = 0;
    } 

    if ( wantedOffset != verticalOffset ) 
    {
        [self moveView: wantedOffset - verticalOffset];
        verticalOffset = wantedOffset;
    }

}
- (void)moveView:(int)offset

{
    [UIView beginAnimations:nil context:NULL];

    [UIView setAnimationDuration:0.3];

    CGRect rect = self.view.frame;

    rect.origin.y -= offset;

    self.view.frame = rect;

    [UIView commitAnimations];
}
我的问题是上面的代码正在工作,但在设备中,每当视图出现时,方法称为“它不工作”,如何写入视图将出现,请告诉我


提前谢谢。

我并没有从你的问题中完全了解,但我会试一试

所以你说:

问题是上面的代码正在工作,但在设备中,每当视图出现时,称为“它不工作”的方法将出现如何写入视图,请告诉我

你是说代码在你看到的某个教程中运行,还是在你的模拟器中运行,而不是在设备上

有些动画代码可以在模拟器中工作,但不能在设备上工作,这对我来说似乎很奇怪,所以这不应该是问题所在

你说的是ViewWill似乎没有被调用,你使用的是导航控制器吗?在基于导航控制器的应用程序中,不会调用viewWillAppear方法

您用来显示和隐藏所需键盘的方法也有点奇怪,您在中谈到设置UITextField的动画,但您正在移动整个视图

为什么不为所需的textfield创建一个属性或至少创建一个实例变量,这样就可以通过任何方法对该textfield进行寻址,从而使其进入/退出动画

如果您使用的是nivation控制器: 创建一个方法并将其称为moveTextFieldIn,然后在上一个viewController中,您可能会有如下内容:

UIViewController * nextViewController = [[UIViewController alloc] init];
[[self navigationController] pushViewController:nextViewController animated:YES];
[nextViewController release];
将其更改为:

UIViewController * nextViewController = [[UIViewController alloc] init];
[nextViewController moveTextFieldIn];
[[self navigationController] pushViewController:nextViewController animated:YES];
[nextViewController release];
如果您没有创建moveTextFieldIn,请执行以下操作:

UIViewController * nextViewController = [[UIViewController alloc] init];
[nextViewController viewWillAppear];
[[self navigationController] pushViewController:nextViewController animated:YES];
[nextViewController release];
好吧,有很多猜测,但我希望这会对你有所帮助

还有一件事: 标准动画持续时间为0.3,因此可以删除该行代码,保持其干净-