キーボードがスライドしたときにNAVバーから「完了」ボタンを無効にする方法は?
-
30-09-2019 - |
質問
私はそれにアクセスできないので、私はそれを無効にできないと信じています UIBarButttonItem
プログラムで
(viewithtagまたは rightBarButtonItem
).
何か提案(IBなしでインターフェイスを追加することから短い)?
テストとして、プログラムで(NAVバーの左側)ボタンを追加しようとしましたが、NAVバーには表示されませんでした。
関連するコード(in 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];
}
詳細
その完了ボタンなので、これは一般的なケースだと思います。
a)はaです UIBarButttonItem
IBライブラリから、いくつかのスクロールビューにあるナビゲーションバーに追加されました UITextField's
.
b)期待どおりに動作します(ユーザーが入力したデータなどを保存するため)、
キーボードが表示されたときに無効になっていないことを除きます。
c)ib>検査官>バーボタンアイテム属性が表示されます。
識別子=完了
タグ= 44
class = UIBarButtonItem
解決
通知を聞くことができます(UIKeyboardWillShowNotification
)キーボードがスライドしたときに投稿しました。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
次に、実装します -keyboardWillShow:
.
-(void)keyboardWillShow {
UIButton *button = self.navigationItem.leftBarButtonItem;
button.enabled = NO;
}
もう一度ボタンを再現できるようにするには、 UIKeyboardDidHideNotification
他のヒント
使用する必要があります
UIBarButtonItem *doneButton = self.navigationItem.leftBarButtonItem;
doneButton.enabled = YES;
//Both of these should work, you shouldn't need any type of IBOutlets for this
UINavigationItem *item = self.navigationItem;
UIBarButtonItem *doneButton = item.leftBarButtonItem;
所属していません StackOverflow