iOS键盘自适应弹出效果

 更新时间:2017年06月30日 15:53:30   作者:弦外雨  
这篇文章主要为大家详细介绍了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展开三级列表效果示例

    IOS展开三级列表效果示例

    今天介绍的是一个很不错的三级列表展开效果的例子,文章运用实例代码介绍的很详细,提供给学习IOS的小伙伴们使用。
    2016-08-08
  • IOS开发用户登录注册模块所遇到的问题

    IOS开发用户登录注册模块所遇到的问题

    最近和另外一位同事负责公司登录和用户中心模块的开发工作。通过本文给大家分享IOS开发用户登录注册模块所遇到的问题,感兴趣的朋友一起学习吧
    2016-01-01
  • iOS适配iPhone XS、 iPhone XS Max and iPhone XR的方法浅析

    iOS适配iPhone XS、 iPhone XS Max and iPhone XR的方法浅析

    这篇文章主要给大家介绍了关于iOS适配iPhone XS、 iPhone XS Max and iPhone XR的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 你应该知道的tableViewCell行高计算处理

    你应该知道的tableViewCell行高计算处理

    这篇文章主要给大家介绍了关于tableViewCell行高计算的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • iOS开发中实现新闻图片的无限循环展示的方法

    iOS开发中实现新闻图片的无限循环展示的方法

    这篇文章主要介绍了iOS开发中实现新闻图片的无限循环展示的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS开发中文件的上传和下载功能的基本实现

    iOS开发中文件的上传和下载功能的基本实现

    这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下
    2015-11-11
  • 快速解决iOS10不能跳转系统WiFi列表的问题

    快速解决iOS10不能跳转系统WiFi列表的问题

    下面小编就为大家带来一篇快速解决iOS10不能跳转系统WiFi列表的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android开发笔记之简单基站定位程序的实现

    Android开发笔记之简单基站定位程序的实现

    这篇文章主要介绍了Android开发笔记之简单基站定位程序的实现,详细的介绍了基站定位其实很简单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • 浅谈iOS开发如何适配暗黑模式(Dark Mode)

    浅谈iOS开发如何适配暗黑模式(Dark Mode)

    这篇文章主要介绍了浅谈iOS开发如何适配暗黑模式(Dark Mode),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • ios实现tableView顶部弹簧图片效果

    ios实现tableView顶部弹簧图片效果

    这篇文章主要为大家详细介绍了ios实现tableView顶部弹簧图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论