UITextField 编辑问题 - iPhone SDK

Posted

技术标签:

【中文标题】UITextField 编辑问题 - iPhone SDK【英文标题】:UITextField editing issue - iPhone SDK 【发布时间】:2010-07-26 18:53:07 【问题描述】:

我的 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"]; 


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

有什么想法吗?

非常感谢, 布雷特

【问题讨论】:

【参考方案1】:

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

您实际上是在为视图的转换设置动画 - 而不是视图的实际位置。显然,放大镜不服从转换(非常合乎逻辑,否则它会随着视图的变化而倾斜、拉伸和倾斜)。

所以宁愿动画位置,即self.view.frameself.view.center(归结为同一件事)。此外,我通常使用[UIView beginAnimations...] 等,但如果你的方法有效,它可能也一样好。

【讨论】:

就是这样。非常感谢!多看几眼之后,我同意 [UIView beginAnimations...] 可能是最好的方法。【参考方案2】:

您已使视图看起来位于不同的位置,但由于您实际上并未更改其位置,因此它仍然有效地位于旧位置以进行命中测试等操作。

我将首先为您的视图中心设置动画而不是其变换。您可以只使用 UIView 动画而不是 CABasicAnimation 来做到这一点。此外,当动画完成时,您的视图实际上会在正确的位置结束,因此一切都应该如您所愿。

【讨论】:

以上是关于UITextField 编辑问题 - iPhone SDK的主要内容,如果未能解决你的问题,请参考以下文章

iphone:uitextfield,具有相同委托的多个文本字段?

iPhone X使用IQKeyboardManager管理UITextfield键盘

禁用 UITextField 的自动更正

UITextField - 在键盘和 UIPickerView 之间切换

要 resignFirstResponder 的 UITextField 标识符

UITableViewCell 中的 UITextField - 添加新单元格