UITextField编辑问题 - iPhone SDK

时间:2010-07-26 18:53:07

标签: iphone objective-c uitextfield

我的iPhone应用程序中的UITextFields存在问题,我希望此处的人可能已经看过。

我的屏幕上有一些UITextField,当它们被点击并且键盘出现时它们被覆盖。为了解决这个问题,我将视图设置为动画:

-(void)moveViewUpFromValue:(float)fromOldValue toNewValue:(float)toNewValue keep:(BOOL)keep {

    CABasicAnimation *theAnimation; 
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; 
    theAnimation.duration=0.25; 
    theAnimation.repeatCount=1; 
    if(keep) {
        [theAnimation setRemovedOnCompletion:NO];
        [theAnimation setFillMode:kCAFillModeForwards];
    }
    theAnimation.fromValue=[NSNumber numberWithFloat:fromOldValue]; 
    theAnimation.toValue=[NSNumber numberWithFloat:toNewValue]; 
    [self.view.layer addAnimation:theAnimation forKey:@"animateLayer"]; 

}

这在视觉上效果很好,但是,当我去编辑(按住屏幕以获得放大镜)时,它不会出现。交互在移动之前保留在位置。

有什么想法可以在这里发生什么?

非常感谢, 布雷特

2 个答案:

答案 0 :(得分:0)

这是一种动画这种事物的有趣方式,但不是最常见的方法。

您实际上是动画视图的转换 - 而不是视图的实际位置。显然,放大镜不服从变换(非常合乎逻辑,因为它看起来很透明,拉伸和倾斜)。

因此,请将位置设置为动画,即self.view.frameself.view.center(归结为同一事物)。此外,我通常使用[UIView beginAnimations...]等,但如果你的方法有效,那可能就好了。

答案 1 :(得分:0)

你已经让视图看起来处于不同的位置,但是因为你实际上没有改变它的位置,所以它仍然有效地位于旧位置,例如命中测试等。

我首先要设置动画视图的中心而不是变换。这可以仅使用UIView动画而不是CABasicAnimation。此外,当动画完成时,您的视图实际上会在正确的位置结束,因此事情应该按预期工作。