Iphone 在选项卡栏上设置选择器视图的动画,如键盘

Iphone 在选项卡栏上设置选择器视图的动画,如键盘,iphone,objective-c,Iphone,Objective C,我使用选择器子视图设置自定义视图的动画,如激活UITextField时键盘的显示方式 目前,我通过将自定义视图作为子视图添加到应用程序的UIWindow中来实现。如果将自定义视图作为子视图添加到当前选项卡栏视图控制器的视图中,选项卡栏将覆盖选择器。是否有一种方法可以将自定义视图动画化为当前视图控制器的子视图,而无需选项卡栏覆盖自定义视图?键盘显示的是什么视图?您可以尝试将子视图添加到UITabBarController的视图本身,而不是活动控制器的视图(tabBarController.view

我使用选择器子视图设置自定义视图的动画,如激活UITextField时键盘的显示方式


目前,我通过将自定义视图作为子视图添加到应用程序的UIWindow中来实现。如果将自定义视图作为子视图添加到当前选项卡栏视图控制器的视图中,选项卡栏将覆盖选择器。是否有一种方法可以将自定义视图动画化为当前视图控制器的子视图,而无需选项卡栏覆盖自定义视图?键盘显示的是什么视图?

您可以尝试将子视图添加到UITabBarController的视图本身,而不是活动控制器的视图(tabBarController.view而不是tabBarController.selectedViewController.view),然后在添加的子视图上执行bringSubviewToFront。我还没试过这个,所以我不确定它是否有效


它确实感觉有点像黑客,因为它依赖于UITabBarController的合作——这让我感到不舒服,因为这种行为没有很好的定义。我不认为使用UIWindow会有什么固有的问题。

只是一个小小的免责声明:这是我关于stackoverflow的第一篇文章,所以如果格式不全好,我很抱歉。另外,我对iOS编程和Objective C语言都相当陌生,所以我绝对不是说这是“应该”的方式。然而,最近我遇到了一个类似的情况,我以一种我认为相当优雅的方式解决了这个问题:

在我看来,与使用常规键盘相比,使用UIPickerView可能只是将文本输入文本字段的首选方式。从用户体验的角度来看,对我来说,这意味着UIPickerView(dis)应该以与键盘类似的方式出现

自iOS 3.2以来,UITextField支持inputView属性来指定要用作键盘的自定义视图,这提供了一种显示UIPickerView的方法:

UIPickerView *myPickerView = [[UIPickerView alloc] init];
//myPickerView configuration here...
myTextField.inputView = myPickerView;
像那样。由于UIPickerView没有返回按钮,因此这不会提供直接关闭视图的方法,这就是为什么我建议使用inputAccessoryView属性来显示带有“完成”按钮的工具栏(该工具栏只是为了美观,您也可以使用UIButton对象):

当我重新阅读您的问题时,我注意到UIPickerView只是子视图的一部分。无论如何,此方法适用于任何视图,因此在本例中,您可以将子视图设置为UITextField的inputView

UIToolbar *myToolbar = [[UIToolBar alloc] initWithFrame:
 CGRectMake(0,0, 320, 44); //better code with variables to support view rotation
UIBarButtonItem *doneButton =
 [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
 target:self action:@selector(inputAccessoryViewDidFinish)];
 //using default text field delegate method here, here you could call
 //myTextField.resignFirstResponder to dismiss the views
[toolbar setItems:[NSArray arrayWithObject: doneButton] animated:NO];
myTextField.inputAccessoryView = myToolbar;
//you can -release your doneButton and myToolbar if you like