2013-06-12 2 views
1

У меня есть UIToolbar, который я добавляю как inputAccessoryView к трем UITextFields с цифровыми клавиатурами. На этом UIToolbar У меня есть отмена и сделанная кнопка, чтобы отклонить клавиатуру в соответствии с этим сообщением: trying to add done button to Numeric keyboard. Это отлично подходит для одного UITextField, который можно легко идентифицировать. Тем не менее, я пытаюсь использовать тот же код для трех UITextFields. Вот что у меня есть:Использование inputAccessoryView UIToolbar для нескольких UITextField's

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 

    // weight, numberOfDrinks, and drinkingDuration are UITextFields set up in Storyboard. 
    // I implemented the UITextFieldDelegate protocol in the .h file and set the UITextField's delegates to the owning ViewController in Storyboard. 

    self.weight.delegate = self; 
    self.numberOfDrinks.delegate = self; 
    self.drinkingDuration.delegate = self; 
} 

- (void) textFieldDidBeginEditing:(UITextField *)textField { 

    UIToolbar *doneToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    doneToolbar.barStyle = UIBarStyleBlackTranslucent; 

    // I can't pass the textField as a parameter into an @selector 
    doneToolbar.items = [NSArray arrayWithObjects: 
         [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelKeyboard:)], 
         [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
         [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithKeyboard:)], 
         nil]; 

    [doneToolbar sizeToFit]; 

    textField.inputAccessoryView = doneToolbar; 
} 

- (void) cancelKeyboard: (UITextField *) textField { 

    textField.text = @""; 

    [textField resignFirstResponder]; 
} 

- (void) doneWithKeyboard: (UITextField *) textField { 

    [textField resignFirstResponder]; 
} 

я получаю «непризнанный селектор отправляется, например» ошибки, потому что методы cancelKeyboard и doneWithKeyboard не передается параметр TextField им нужно. Любые идеи, как реализовать это правильно?

Спасибо!

Бен

ответ

1

использование Globle объекта в файле .h UITextField * SelectedTextField; // В начале метода редактирования define SelectedTextField = textField; Затем используйте его на вашем методе, чтобы подать в отставку или показать.

Это поможет вам.

+0

Это именно то, что я искал - спасибо ! –

0

Если вы просто хотите, чтобы закрыть клавиатуру в текущем контроллере представления, вы можете вызвать метод endEditing от вида собственности контроллера вида:

[self.view endEditing]; 
+0

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

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