我有一个扩展的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
}
显示选择器。
有没有办法告诉我用户是否点按了清除按钮而没有显示选择器?
答案 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;
}
}