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

时间:2011-09-12 06:44:07

标签: iphone iphone-sdk-3.0 uitextfield

嗨朋友我使用的代码是

- (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];
}

我的问题是上面的代码正常工作但是在设备中每当视图出现方法时都会调用它的工作方式,如何编写视图会出现请告诉我。

提前致谢..

1 个答案:

答案 0 :(得分:0)

我从你的问题中得不到任何答案,但我会试一试。

所以你说:

  

问题是上面的代码是可以工作但是在设备中每当视图会出现方法调用它不工作时如何写出来的视图会出现请告诉我。

您的意思是代码是在您看到的某个教程中工作还是在您的模拟器中工作而不在设备上?

对我来说似乎很奇怪,一些动画代码可以在模拟器中运行但不在设备上运行,所以这不应该是我的问题。

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

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

为什么不直接为所需的文本字段或至少一个实例变量创建属性,这样您就可以从任何方法处理该文本字段以对其进行动画处理。

如果您使用的是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,因此您可以删除该行代码,保持其清洁; - )