您好,我正在使用以下代码来禁用 2 个 UIButtons
,直到四个 UITextField
中有数据
- (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 之前不会被调用。这需要点击屏幕然后按钮有没有办法避免这种情况,所以按钮将立即启用?
最佳答案
只有当用户点击远离 textField 时,按钮才会激活。如果您使用弹出的普通键盘,请使用键盘上的 DONE 按钮摆脱键盘,然后在键盘自行退出时编写 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,每当您按下 DONE 并退出键盘时,检查所有文本字段的状态。使用 if-else block ,让您的按钮在所有文本字段完成后显示。
关于iphone - textFieldDidEndEditing 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243862/