2012-10-11 3 views
0

Я добавляю UIToolbar к моему UITextField с помощью:отсутствует UIToolbar в UIScrollView

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    self.email.delegate = self; 
    self.password.delegate = self; 

    UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; 

    UIBarButtonItem* previous = [[UIBarButtonItem alloc] initWithTitle:@"Anterior" style:UIBarButtonItemStyleBordered target:self action:@selector(move:)]; 
    UIBarButtonItem* next = [[UIBarButtonItem alloc] initWithTitle:@"Próximo" style:UIBarButtonItemStyleBordered target:self action:@selector(move:)]; 
    UIBarButtonItem* space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:nil action:nil]; 
    UIBarButtonItem* ok = [[UIBarButtonItem alloc] initWithTitle:@"Ok" style:UIBarButtonItemStyleBordered target:self action:@selector(ok:)]; 

    [toolbar setItems:[[NSArray alloc] initWithObjects:previous, next, space, ok, nil]]; 

    [toolbar setTranslucent:YES]; 
    [toolbar setTintColor:[UIColor blackColor]]; 

    for (UIView* view in self.view.subviews) { 
     if ([view isKindOfClass:[UITextField class]]) { 
      [(UITextField*)view setInputAccessoryView:toolbar]; 
     } 
    } 

} 

Теперь я добавляю UIScrollView к моему UIViewController и моя UIToolbar не показывает больше. Что мне не хватает? Я думаю, что я добавляю панель инструментов в представление, а не в scrollview, и потому что scrollview находится над представлением, я не вижу панель инструментов. Как я могу это исправить? Мне нужно добавить в список прокрутки для перемещения содержимого за клавиатурой.

ответ

1

Вы говорите, что вы добавили UIScrollView в свой UIViewController. Я предполагаю, что это означает, что self.email и self.password теперь относятся к этому представлению прокрутки, а не к окнам вашего основного UIViewController view. Таким образом, код, который выполняет итерации над областями объекта view, не найдет ваши UITextFields.

Так что ваш код:

for (UIView* view in self.view.subviews) { 

должен выглядеть примерно так (я предполагаю, что Scrollview является свойством):

for (UIView* view in self.scrollView.subviews) { 

Альтернативного способом решения этой проблемы является использование ваших методов UITextFieldDelegate добавить свойство inputAccessoryView в ответ на начало редактирования. Так, например,

- (void) textFieldDidBeginEditing:(UITextField *)textField{ 
    [textField setInputAccessoryView:keyboardToolbar]; 
} 
Смежные вопросы