目的:我试图切换"保存" UIBarButtonItem与"隐藏键盘"键盘出现时UIBarButtonItem(然后在单击"隐藏键盘"按钮时执行相反操作)。
到目前为止,我已经创建了两个UIBarButtonItem并将它们连接到Interface Builder。
@property (weak, nonatomic) IBOutlet UIBarButtonItem *saveButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *hideKeyButton;
这是我到目前为止在我的主要设置的代码:
- (void)keyboardDidShow:(NSNotification *)aNotification {
// Show HideKey Button
// Hide Save Button
}
- (void)keyboardWillHide:(NSNotification *)aNotification {
// Show Save Button
// Hide HideKey Button
}
在Interface Builder上,默认情况下存在“保存”按钮。以编程方式,如何显示HideKey按钮和隐藏保存按钮?感谢。
答案 0 :(得分:1)
我没有使用IB执行此任务,而是以编程方式执行此操作。
这样的事情:
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self
action:@selector(saveButtonPressed:)];
[self.navigationItem setRightBarButtonItem:saveButton];
以类似的方式创建并设置HideKey按钮。
然后,当然您可能希望缓存UIBarButtonItem
s,为他们设置延迟@properties
。
答案 1 :(得分:1)
有两个部分可以完成这项工作。
首先,您需要注册通知,您可以在viewDidLoad中添加以下内容:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
其次,在您的事件处理程序中,只需设置按钮:
- (void)keyboardDidShow:(NSNotification *)aNotification {
self.navigationItem.rightBarButtonItem = hideKeyButton;
}
- (void)keyboardWillHide:(NSNotification *)aNotification {
self.navigationItem.rightBarButtonItem = saveButton;
}