UIPickerView + UIToolsBar

- (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


猜你喜欢

转载自blog.csdn.net/lanliang901125/article/details/18090641