ios - UIPickerView 动画隐藏和显示失败

标签 ios objective-c

我的界面文件中有这个:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
    <UIPickerViewDataSource, UIPickerViewDataSource>

// PickerView Array
@property (strong, nonatomic) NSArray *pickerNames;
@property (strong, nonatomic) NSArray *pickerValues;    
@property (strong, nonatomic) IBOutlet UIPickerView *picker;

- (IBAction)buttonSelectPicker;

@end

我的实现文件中有这个:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // PickerView Array
    _pickerNames = @[@"Data1", @"Data2", @"Data3", @"Data4", @"Data5"];
    _pickerValues = @[@"val1", @"val2", @"val3", @"val4", @"val5"];
    _picker.frame = CGRectMake(0, 1000, 320, 216);
}

所有这些代码现在都可以在我的 iPod (iOS 6.1.3) 上完美运行,但我对我实际上想做的更多事情有疑问......它们是......

  1. 当应用程序第一次加载时,UIPickerView 被隐藏(在屏幕区域之外)。我尝试添加这一行(在 viewDidLoad 上),但它不起作用。

    _picker.frame = CGRectMake(0, 1000, 320, 216);

  2. 然后,当用户点击 buttonSelectPicker 按钮时,UIPickerView 就会显示。这行代码也不起作用:

    - (IBAction)buttonSelectPicker { [UIView beginAnimations:nil 上下文:NULL]; [UIView setAnimationDuration:0.3]; _pickerviewContainer.frame = CGRectMake(0, 289, 320, 216); [UIView提交动画]; }

  3. 当用户点击 UIPickerView 区域之外的任何位置时,它将隐藏 UIPickerView。我有这段代码可以关闭键盘,但我不知道如何修改以关闭 UIPickerView :

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { for (UIView * txt in self.view.subviews){ if ([txt isKindOfClass:[UITextField 类]]) { [txt 辞职第一响应者]; } } }

谢谢...

最佳答案

您基本上是在重新创建 inputView 的功能。 UIKit 允许您定义任何自定义输入法,而不仅仅是键盘,因此,您可以放置​​一个 UITextField,并设置 inputView 如下:

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 162)];

picker.dataSource = self;
picker.delegate = self;

self.textField.inputView = picker;

(选择器也可以从 Nib 加载)

然后使用常规方法处理文本字段

// Show keyboard/picker
[self.textField becomeFirstResponder]

// Dismiss keyboard/picker
[self.textField resignFirstResponder]

当文本字段成为第一响应者时,将显示选择器而不是键盘。我不知道这是否适合您的需求,但请将其视为另一种更清洁的方式。

关于ios - UIPickerView 动画隐藏和显示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778674/

相关文章:

ios - 如何在将 View Controller 推送到另一个 View Controller 时处理 UIParallaxDimmingView?

ios - 在 Swift Xcode 中使用其他文件中的函数

ios - 集成 Google Analytics 后 Aviary SDK 崩溃

iphone - 应用程序从 iPhone 上的后台返回后的 copyNextSampleBuffer

ios - 型号 - Controller - 通讯

ios - popoverview内的UIImagePickerController导致错误

iphone - 检查 NSMutableArray 中是否存在某些内容

objective-c - 注释在 MapKit 、 iOS 上不显示标题/副标题

objective-c - 仅在 iOS 4 上的 ARC 中为 "Modifying layer that is being finalized"

iphone - 获得在 iPhone 中播放的音乐的力量