转自:http://blog.youkuaiyun.com/duxinfeng2010/article/details/8269644
思路基本一样,不过考虑到显示效果,去除了很多不必要的代码,自己更改了下
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (strong, nonatomic) UIView *exitButton;
@property (weak, nonatomic) UIButton *cancleButton;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_exitButton = [[UIButton alloc] init];
CGRect exitBtFrame = CGRectMake(0, self.view.frame.size.height , self.view.frame.size.width, 30.0f);
[_exitButton setFrame:exitBtFrame];
_exitButton.backgroundColor = [UIColor grayColor];
UIButton *returnButton = [[UIButton alloc] initWithFrame:CGRectMake(_exitButton.bounds.size.width - 50, 0, 50, 30)];
returnButton.backgroundColor = [UIColor redColor];
[returnButton setTitle:@"完成" forState:UIControlStateNormal];
[returnButton addTarget:self action:@selector(CancelBackKeyboard:) forControlEvents:UIControlEventTouchDown];
[_exitButton addSubview:returnButton];
[self.view addSubview:_exitButton];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
NSLog(@"%@",_exitButton);
}
- (void)handleKeyboardDidShow:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;
CGFloat distanceToMove = kbSize.height;
[self adjustPanelsWithKeyBordHeight:distanceToMove];
}
- (void)handleKeyboardWillHide:(NSNotification *)notification
{
if (_exitButton) {
CGRect exitBtFrame = CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 30.0f);
_exitButton.frame = exitBtFrame;
[self.view addSubview:_exitButton];
}
}
-(void)adjustPanelsWithKeyBordHeight:(float) height
{
if (_exitButton) {
CGRect exitBtFrame = CGRectMake(0, self.view.frame.size.height - height-30, self.view.frame.size.width, 30.0f);
_exitButton.frame = exitBtFrame;
[self.view addSubview:_exitButton];
}
}
-(void)CancelBackKeyboard:(id)sender
{
[_textField resignFirstResponder];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.textField resignFirstResponder];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end