iOS键盘自适应弹出效果

一、iOS键盘自适应弹出效果图

二、工程图

三、代码

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

<UITextFieldDelegate>

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

UITextField *field=[[UITextField alloc]initWithFrame:CGRectMake(100, 300, 50, 50)];

field.backgroundColor=[UIColor redColor];

field.delegate=self;

[self.view addSubview:field];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

}

#pragma -mark -keyboard notificatin

- (void)keyboardWillShow:(NSNotification *)notification {

NSDictionary *info = [notification userInfo];

// keyboardHeight 为键盘高度

CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

[self animateViewWithKeyboardHeight:keyboardSize.height];

}

- (void)keyboardWillHide:(NSNotification *)notification {

[self animateViewWithKeyboardHeight:0.0];

}

- (void)animateViewWithKeyboardHeight:(CGFloat)keyboardHeight {

NSTimeInterval animationDuration = 0.3f;

CGFloat height = self.view.bounds.size.height;

CGFloat width = self.view.bounds.size.width;

CGFloat topSize = 0.0;

CGFloat viewH = self.view.frame.size.height-64;

CGFloat deviceHeight = [UIScreen mainScreen].bounds.size.height;

CGFloat animateH = deviceHeight - viewH - keyboardHeight;

if (animateH >= 0) {

topSize = 0;

CGRect toRect = CGRectMake(0, topSize, width, height);

self.view.frame = toRect;

} else {

topSize = animateH;

CGRect toRect = CGRectMake(0, topSize, width, height);

[UIView animateWithDuration:animationDuration animations:^{

self.view.frame = toRect;

}];

}

}

#pragma -mark -UITextFieldDelegate

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

[textField resignFirstResponder];

return YES;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

以上是 iOS键盘自适应弹出效果 的全部内容, 来源链接: utcz.com/z/344756.html

回到顶部