2012-01-30 2 views
1

У меня есть расширенный UITextField (добавлено свойство NSString, inputType к нему) для ввода пользовательского ввода. когда пользователь нажимает текстовое поле, я использую сборщик для выбора пользователем входа. я также должен разрешить пользователю очищать текстовое поле, поэтому я подумал, что могу использоватьUITextField clearButtonMode и UIPicker

tillageTextField.clearButtonMode = UITextFieldViewModeAlways; 

чтобы очистить текстовое поле.

проблема заключается в том, когда вы нажимаете X, чтобы очистить текстовое поле, оно также запускает мой сборщик. i use:

-(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

Вы также мог бы реализовать 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; 
    } 
} 
+0

это позволило бы мне, чтобы очистить его ж/из захватывающего показа, но не позволит пользователю изменить свой выбор , – Padin215

+0

Можете ли вы объяснить, почему вы так думаете? Сборщик покажет, что пользователь не * просто * очистил текстовое поле. –

+0

На самом деле, я сделал небольшую поправку, чтобы избежать выбора сборщика, отказавшегося показать, очищено ли текстовое поле, когда сборщик виден, но в противном случае это должно работать нормально. –

Смежные вопросы