我有一个主视图,包含我的所有文本字段和按钮 . 对于我的文本字段,我使用inputView来显示UIPickerViews而不是键盘 . 我想知道当选择文本字段时,我可以将视图向上移动,这样拾取器和拾取器工具栏不会覆盖文本字段,因为我在底部有一些被它覆盖的文本字段 . 我已经尝试使用带有表视图的教程中的以下代码,但它对我不起作用 . 它构建没有错误,但它不能正常工作 . 视图刚刚消失,然后只有当pickerView被解除时它才会返回一半 .
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pickerShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pickerHidden:) name:UIKeyboardWillHideNotification object:nil];
}
-(void)pickerShown:(NSNotification *)note {
CGRect pickerFrame;
[[[note userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&pickerFrame];
CGRect scrollViewFrame = mainView.frame;
scrollViewFrame.size.height -= pickerFrame.size.height;
[mainView setFrame:pickerFrame];
}
-(void)pickerHidden:(NSNotification*)note{
[mainView setFrame:self.view.bounds];
}
这接近我需要做的事情吗?
2 回答
对于那些寻找替代解决方案的人来说,这里是one . 我把它变成了一个可以在复杂项目中重复使用的库 .
并在视图中以这种方式使用它:
我建议你看看this tutorial "Sliding UITextFields around to avoid the keyboard" .
在您的情况下,您需要将
textFieldDidBeginEditing
中的代码放在pickerShown
方法中,并改变它们对于拾取器高度的键盘高度的常量 .希望这可以帮助 :)