在textFieldDidEndEditing中隐藏UITextField

时间:2012-11-04 15:18:02

标签: iphone ios xcode uitextfield

我正在尝试在我的应用中隐藏我的UITextField。 我首先尝试使用UIButton来实现..

因此我做到了:

-(IBAction)hide:(id)sender {

_textField.hidden = !_textField.hidden;

}

这有效,但现在我想在编辑后自动完成,所以我写了这段代码:

 -(void)textFieldDidEndEditing:(UITextField *)textField {

 textField.hidden = YES;

 }

在.h中我输入了这段代码:

-(void)textFieldDidEndEditing:(UITextField *)textField;

有谁能告诉我为什么这不起作用?

是否可以用动画隐藏它? 我试过这个不起作用:

[UIView animateWithDuration:2.0 animations:^
{ code.. }
]

谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您应该操纵文本字段的Alpha值来为其设置动画 例如:

textField.alpha = 1;
[UIView animateWithDuration:2.0 animations:^{
    textField.alpha = 0;
}];

答案 1 :(得分:1)

UITextField的隐藏属性是BOOL,无法设置动画。尝试使用文本字段的 alpha 属性。它接受浮点值,其中0.0表示完全透明,1.0表示完全不透明。

所以你可以动画UITextField的alpha来隐藏它:

[UIView animateWithDuration: 2.0 
                 animations:^{ 
      textField.alpha = 0.0;
 }];

正如beryllium所说,你还应该检查你的文本字段是否确实设置了它的委托,以便调用 -textFieldDidEndEditing:方法。

我假设您有一个视图控制器设置如下:

@interface ViewController : UIViewController<UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *textField;
@end

然后您应该将故事板中的UITextField的委托插座连接到视图控制器,如下所示:

enter image description here

或者您可以在视图控制器的 -viewDidLoad 方法中以编程方式执行此操作:

- (void) viewDidLoad 
{
     self.textField.delegate = self;
}