UITextField clearButtonMode和UIPicker

时间:2012-01-30 17:13:11

标签: iphone objective-c ios

我有一个扩展的UITextField(为它添加了NSString属性,inputType)以接受用户输入。当用户点击文本字段时,我使用选择器供用户选择输入。我还需要允许用户清除文本框,以便我可以使用

tillageTextField.clearButtonMode = UITextFieldViewModeAlways;

清除文字字段。

问题是当你点击X来清除文本框时,它也会触发我的选择器。我用:

-(BOOL) textFieldShouldBeginEditing:(MyTextField *) textField 
{
    //other code
    else if ([textField.inputType isEqualToString:@"tillageMethod"])
    {
        self.customArray = [NSArray arrayWithObjects:@"No Till", @"Strip Till", @"Full Till", nil];
        self.tempTextField = textField;
        [self showPicker];

        return  NO;
    }
    //other code
}

显示选择器。

有没有办法告诉我用户是否点按了清除按钮而没有显示选择器?

1 个答案:

答案 0 :(得分:1)

您还可以实施textFieldShouldClear:并在您的课程上设置一个标记(例如doNotShowPickerOnNextCallback

- (BOOL)textFieldShouldClear:(UITextField *)textField {

    if ([textField.inputType isEqualToString:@"tillageMethod"]) {

        if (![self pickerIsShowing]) {
            self.doNotShowPickerOnNextCallback = YES;
        }
    }

    return YES;
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

    //other code
    else if ([textField.inputType isEqualToString:@"tillageMethod"]) {

        if (self.doNotShowPickerOnNextCallback) {

            self.doNotShowPickerOnNextCallback = NO;
            return NO;
        }

        self.customArray = [NSArray arrayWithObjects:@"No Till", @"Strip Till", @"Full Till", nil];
        self.tempTextField = textField;
        [self showPicker];

        return  NO;
    }
}