Я считаю, что я не могу отключить его, потому что я не могу получить доступ к этому UIBarButttonItem
программным путем
(с любым видомWithTag или rightBarButtonItem
).Как отключить кнопку «Готово» на панели навигации, когда клавиатура скользит?
Любые предложения (не считая добавления интерфейса без IB)?
В качестве теста я также попытался добавить кнопку программно (слева от панели навигации), но она не отображалась в навигационной панели.
Применимый КОД (В MyEditorViewControler.m
):
- (void)textFieldDidBeginEditing:(UITextField *)sender { //successfully executes when keyboard slides in
UINavigationItem *item = self.navigationItem; //item = 0x6420e0 OK. (value at debugger breakpoints)
UIBarButtonItem *doneButton4 = (UIBarButtonItem *) [self.view viewWithTag:44]; //doneButton4 = 0x0, not OK.
doneButton4.enabled = NO;
}
- (void)textFieldDidEndEditing:(UITextField *)sender { //successfully executes when keyboard slides out.
...
UIButton* doneButton = (UIButton *)[self.view viewWithTag:44]; //Attempt to re-enable button.
doneButton.enabled = YES;
}
- (void)viewDidLoad { //Attempt to programmatically add a *left* button to the nav bar. Result: Button does not display in nav bar.
....
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
[leftBarButtonItem release];
}
ДЕТАЛЬ
Я думаю, это обычное дело, потому что кнопка Готово:
а) представляет собой UIBarButttonItem
добавляемых IB библиотеку к панели навигации, которая в виде прокрутки, который имеет около UITextField's
.
b) ведет себя как ожидалось (для сохранения введенных пользователем данных и т. Д.),
за исключением того, что не отключается при появлении клавиатуры.
с) IB> Инспектор> Бар Кнопка Атрибуты элемента показывает:
Identifier = Done
Tag = 44
Класс = UIBarButtonItem
С keyboardWillShow У меня есть доступ к leftBarButtonItem (большой), но эта кнопка (созданный программно в viewDidLoad) \t \t \t \t \t \t \t \t \t \t \t \t не отображается в панели навигации (созданной в IB). \t \t \t \t \t \t \t \t \t \t \t \t Так что я не могу сказать, если он был отключен или нет. Как получить этот элемент leftBarButtonItem? – sambaMan
РЕШЕНИЕ: Большое спасибо за ответы. Он работает сейчас. Хитрость заключалась в том, что вместо того, чтобы захватывать кнопку напрямую, сначала захватить бар наблок, а затем взять с нее кнопку. UINavigationBar * navBar = (UINavigationBar *) [self.view viewWithTag: 22]; , затем включите и отключите текст textFieldDidBeginEditing textFieldDidEndEditing. Большое спасибо. – sambaMan