我有一个工具栏,我需要在编辑文本时使用,否则。
在之前的应用中,我手动移动了工具栏(收听通知等)
但我想使用inputAccessoryView
...所以在我的viewDidLoad
,我做
for (/*myTextFields*/) {
textField.inputAccessoryView = keyboardToolbar;
}
[self.view addSubView:keyboardToolbar];
哪个工作正常,工具栏出现,我点击一个文本字段,工具栏向上滑动 - 一切都很好。
但是当我隐藏键盘时,inputAccessoryView
将我的工具栏拖离屏幕。有没有办法告诉inputAcessoryView
它的固定位置在哪里? - 或者我是否必须回到我以前听取通知等的方式......?
答案 0 :(得分:2)
我通过听取通知并移动工具栏来解决这个问题......哦,好吧。
这样的事情就完成了工作:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
/* Listen for keyboard */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWillShow:(NSNotification *)notification
{
[keyboardToolbar setItems:itemSetFull animated:YES];
/* Move the toolbar to above the keyboard */
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect frame = self.keyboardToolbar.frame;
frame.origin.y = self.view.frame.size.height - 210.0;
self.keyboardToolbar.frame = frame;
[UIView commitAnimations];
}
- (void)keyboardWillHide:(NSNotification *)notification
{
[keyboardToolbar setItems:itemSetSmall animated:YES];
/* Move the toolbar back to bottom of the screen */
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect frame = self.keyboardToolbar.frame;
frame.origin.y = self.view.frame.size.height - frame.size.height;
self.keyboardToolbar.frame = frame;
[UIView commitAnimations];
}
我猜输入配件视图实际上只是用于粘在键盘顶部的东西:)
答案 1 :(得分:1)
我最近发现了这个问题,似乎很少有人这样做。所以,我想引导您回答这个问题:https://stackoverflow.com/a/24855095/299711,我将在下面复制:
将您的UIToolbar分配给视图控制器中的属性:
@property (strong, nonatomic) UIToolbar *inputAccessoryToolbar;
在顶视图控制器中,添加以下方法:
- (BOOL)canBecomeFirstResponder{
return YES;
}
- (UIView *)inputAccessoryView{
return self.inputAccessoryToolbar;
}
然后(可选,因为通常不需要),只要键盘被隐藏,只需致电:
[self becomeFirstResponder];
这样,您的inputAccessoryToolbar将成为您的视图控制器和文本视图的输入附件视图。