【问题标题】:UITextField check for inputUITextField 检查输入
【发布时间】:2013-11-26 21:00:28
【问题描述】:

我的 TableViewCell 中有 2 个文本字段。

对于第二个 TextField,我需要确认才能启用按钮。

我正在使用此代码来确定是否应启用确认按钮,但它不起作用:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    textField = self.installDeviceCell.passWordTextFieldOutlet;
    [textField addTarget:selfaction:@selector(checkTextField:)forControlEvents:UIControlEventEditingChanged];
    return YES;
}

-(void)checkTextField:(id)sender
{
    UITextField* textField = (UITextField*)sender;
    if ([textField.text length] < 7) {
        self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO;
    }else if ([textField.text length] > 7){
        self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES;
    }else{
        self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES;
    }
}

【问题讨论】:

  • 你设置了文本字段的代理吗? [textField setDelegate:self]

标签: ios iphone objective-c uitextfield uitextfielddelegate


【解决方案1】:

当 UITextField 被实例化时,您是否为您的 UITextField 分配了您的 UITextFieldDelegate?如果不分配它,则不会调用 UITextField 的委托方法。

还要确保在委托的头文件中指定接口的委托,例如

@interface MyDelegate <UITextFieldDelegate>
// ...
@end

最后,您的文本计算有点奇怪。您可以使用shouldChangeCharactersInRange 进行所有计算。您也不需要添加目标或覆盖 textField 属性。只需检查 replacementString 是否大于 7 个字符。您的最终代码可能如下所示:

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([string length] < 7) {
        self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = NO;
    } else {
        self.installDeviceCell.installDeviceTouchUpInsideButton.enabled = YES;
    }
    return YES;
}

有关更多信息,请参阅有关委派的出色答案:https://stackoverflow.com/a/626946/740474

【讨论】:

  • 是的,UITextFieldDelegate 已实例化
  • 在这种情况下,您的计算方式可能存在问题。有关更多详细信息,请参阅我编辑的答案。当 textField:shouldChangeCharactersInRange:replacementString:delegate 方法被触发并确保它的行为符合预期(或完全被调用)时,还可以尝试单步调试器
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 2011-01-26
  • 2015-09-22
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多