- (void)textFieldDidBeginEditing:(UITextField *)textField
{
// [self showPickerView];
PickerView *pickerView = [[PickerView alloc] initWithFrame:self.view.bounds data:@[@"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2"] components:1 view:_textField];
[self.view addSubview:pickerView];
}
//
// PickerView.h
// PickerViewTest
//
// Created by lance on 14-1-10.
// Copyright (c) 2014年 Lance. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface PickerView : UIView <UIPickerViewDataSource, UIPickerViewDelegate>
{
NSArray *_data;
NSInteger _components;
UITextField *_bindView;
UIPickerView *_pickerView;
UIToolbar *_toolbar;
}
- (id)initWithFrame:(CGRect)frame data:(NSArray *)data components:(NSInteger)components view:(UITextField *)view;
@end
//
// PickerView.m
// PickerViewTest
//
// Created by lance on 14-1-10.
// Copyright (c) 2014年 Lance. All rights reserved.
//
#import "PickerView.h"
@interface PickerView ()
- (void)cancel:(id)sender;
- (void)done:(id)sender;
@end
@implementation PickerView
- (id)initWithFrame:(CGRect)frame data:(NSArray *)data components:(NSInteger)components view:(UITextField *)view
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
_data = [NSArray arrayWithArray:data];
_components = components;
_bindView = view;
[self initView];
}
return self;
}
- (void)initView
{
_toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(cancel:)];
UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithTitle:@"确定" style:UIBarButtonItemStyleDone target:self action:@selector(done:)];
[_toolbar setItems:@[cancel, space, done]];
_pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 260)];
_pickerView.delegate = self;
_pickerView.dataSource = self;
[_pickerView addSubview:_toolbar];
_bindView.inputView = _pickerView;
_bindView.inputAccessoryView = _toolbar;
self.backgroundColor = [UIColor colorWithRed:0.7 green:0.5 blue:0.6 alpha:0.4];
}
- (void)removeView
{
CGRect toolBarFrame = _toolbar.frame;
CGRect pickerViewFrame = _pickerView.frame;
pickerViewFrame.origin.y = toolBarFrame.origin.y = self.frame.size.height;
[UIView animateWithDuration:0.5 animations:^{
self.backgroundColor = [UIColor clearColor];
_toolbar.frame = toolBarFrame;
_pickerView.frame = pickerViewFrame;
} completion:^(BOOL finished) {
[_bindView resignFirstResponder];
[_pickerView removeFromSuperview];
[_toolbar removeFromSuperview];
[self removeFromSuperview];
}];
}
#pragma mark barButton action
- (void)cancel:(id)sender
{
[self removeView];
}
- (void)done:(id)sender
{
[self removeView];
}
#pragma mark UIPickerView DataSource
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (_components == 1) {
return [_data count];
} else {
return [[_data objectAtIndex:component] count];
}
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return _components;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (_components == 1) {
return [_data objectAtIndex:row];
} else {
return [[_data objectAtIndex:component] objectAtIndex:row];
}
}
#pragma mark UIPickerView delegate
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
}
@end