我有UITableView
个UITextFields
。当用户编辑textfields
时,textfield
的{{1}}会滚动到键盘正上方的位置。这适用于使用默认键盘的firstresponder
。但我有一个textfields
使用textfield
作为inputView。因为我希望用户在UIPickerView
中确认选择,我还在pickerview
的{{1}}添加了一个带有完成按钮的accessoryview
。
现在我遇到了一个我不理解的行为。如果没有显示键盘,我单击带有选择器视图的文本字段,我会收到inputAccessoryView
的通知。通知将引导以下函数调用:
textfield
键盘的高度(kbSize.height)为260.这等于UIKeyboardDidShowNotification
中工具栏的默认键盘大小216 + 44。 - (void)keyboardWasShown:(NSNotification *)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
// handle resize of tableview frame...
}
会滚动到accessoryview
。
当我第一次单击带有默认键盘的文本字段而不是使用带有textfield
的文本字段继续(不解除键盘)时,会发生奇怪的行为。 accessoryview
按预期显示,但键盘大小不会更改并保持216(处理通知)。这会导致不同的滚动行为:在pickerview
的半透明工具栏后面可以看到pickerview
。
请问,有人可以解释为什么两种情况下选择器视图的键盘大小都不同。
请有人告诉我如何在代码中处理这个问题。当textfield
滚动到半透明工具栏后面的位置时,对我来说很好。