iOS键盘自适应弹出效果

发布时间 - 2026-01-11 02:08:00    点击率:

一、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自适应弹出  # ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)  # 解决ios模拟器不能弹出键盘问题的方法  # iOS应用开发中监听键盘事件的代码实例小结  # 总结IOS关闭键盘/退出键盘的五种方式  # iOS中的UIKeyboard键盘视图使用方法小结  # IOS关闭键盘的方法  # IOS开发中键盘输入屏幕上移的解决方法  # 总结IOS中隐藏软键盘的三种方式  # iOS让软键盘消失的简单方法  # iOS自定义键盘切换效果  # 弹出  # 大家多多  # 自适应  # 工程图  # alloc  # CGRectMake  # initWithFrame  # typically  # view  # loading  # field  # UITextField  # nib  # addObserver  # defaultCenter  # selector  # UIKeyboardWillShowNotification  # keyboardWillShow  # NSNotificationCenter  # UIColor 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 制作电商网页,电商供应链怎么做?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  如何用花生壳三步快速搭建专属网站?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  深入理解Android中的xmlns:tools属性  详解MySQL数据库的安装与密码配置  Laravel distinct去重查询_Laravel Eloquent去重方法  焦点电影公司作品,电影焦点结局是什么?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何实现事件和监听器?(Event & Listener实战)  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何正确选择百度移动适配建站域名?  如何在云指建站中生成FTP站点?  JavaScript如何实现音频处理_Web Audio API如何工作?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  免费网站制作appp,免费制作app哪个平台好?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel如何实现API版本控制_Laravel版本化API设计方案  🚀拖拽式CMS建站能否实现高效与个性化并存?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  利用vue写todolist单页应用  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  jquery插件bootstrapValidator表单验证详解  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何在搬瓦工VPS快速搭建网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  微信小程序 canvas开发实例及注意事项  如何为不同团队 ID 动态生成多个非值班状态按钮  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Java垃圾回收器的方法和原理总结  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?