[ios]textFieldDidEndEditing 替代

发布时间: 2017/3/27 20:03:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

嗨我用到下面的代码来保持 2 UIButtons 禁用状态,直到有数据在四个 UITextField s

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


if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) {
    [calcOneButton setEnabled:YES];
    [calcTwoButton setEnabled:YES];

}
if (([brand.text length] ==0) || ([qty.text length] ==0) || ([size.text length] ==0) || ([price.text length] ==0)){

    [calcOneButton setEnabled:NO];
    [calcTwoButton setEnabled:NO];
}

}

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

int ebtl = [brand.text length];
int eqtl = [qty.text length];
int estl = [size.text length];
int eptl = [price.text length];
NSLog(@"ebtl = %d eqtl = %d estl = %d eptl = %d",ebtl, eqtl, estl, eptl); 

if (([brand.text length] ==0) || ([qty.text length] ==0) || ([size.text length] ==0) || ([price.text length] ==0)){
    [calcOneButton setEnabled:NO];
    [calcTwoButton setEnabled:NO];
}
if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) {
    [calcOneButton setEnabled:YES];
    [calcTwoButton setEnabled:YES];
}

}

我的问题是 textFieldDidEndEditing 之前用户点击 textField。 这不调用创建需要点击屏幕,然后按钮有办法可以避免这一点,所以按钮将立即启用?

解决方法 1:

只有当用户点击从文本字段时,按钮将变得活跃。如果您使用的正常的键盘将弹出该,使用键盘上的完成按钮以摆脱键盘,然后写 IBAction,当键盘辞职本身,然后再启用您的按钮。

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; //enable your buttons after this
return 1;
}

或使用 IBAction:

-(IBAction) textFieldFinishedDone: (id) sender; // enable your buttons after this

只有当所有的向文本框填充右按钮必须得到积极吗?你可以这样做。 注释掉你已经写在上面的两个函数。使用 IBAction,每当您按完成并且辞职键盘,检查所有向文本框为他们的地位。使用 if else 块,让你时做了所有向文本框显示的按钮。

赞助商