iOS中只让textField使用键盘通知的实例代码

发布时间 - 2026-01-11 02:24:52    点击率:

代码:

#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view, typically from a nib.
  //为textField增加键盘事件
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addKeyboardNoti) name:UITextFieldTextDidBeginEditingNotification object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeKeyboardNoti) name:UITextFieldTextDidEndEditingNotification 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 -UITextFieldText Notification
//增加键盘事件
-(void)addKeyboardNoti
{
  NSLog(@"------addKeyboardNoti-------");
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
//移除键盘事件
-(void)removeKeyboardNoti
{
  NSLog(@"------removeKeyboardNoti---------");
  [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}
- (void)didReceiveMemoryWarning {
  [super didReceiveMemoryWarning];
  // Dispose of any resources that can be recreated.
}
@end

总结

以上所述是小编给大家介绍的iOS中只让textField使用键盘通知的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# ios  # textField键盘通知  # iOS应用开发中监听键盘事件的代码实例小结  # iOS中的UIKeyboard键盘视图使用方法小结  # iOS实现输入框跟随键盘自动上移的实例代码  # iOS中键盘 KeyBoard 上添加工具栏的方法  # iOS项目开发键盘弹出遮挡输入框问题解决方案  # h5 ios输入框和键盘的兼容性优化指南  # iOS开发第三方键盘处理实例代码  # iOS自定义键盘切换效果  # IOS数字键盘左下角添加完成按钮的实现方法  # iOS自定义身份证键盘  # 小编  # 在此  # 给大家  # 所述  # 给我留言  # 感谢大家  # 移除  # 疑问请  # 有任何  # mark  # pragma  # notificatin  # keyboard  # UITextFieldTextDidEndEditingNotification  # addKeyboardNoti  # UITextFieldTextDidBeginEditingNotification  # object  # removeKeyboardNoti  # nil  # CGSize 


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


相关推荐: java获取注册ip实例  如何在IIS中新建站点并解决端口绑定冲突?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Python文件异常处理策略_健壮性说明【指导】  如何在阿里云域名上完成建站全流程?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Java类加载基本过程详细介绍  如何破解联通资金短缺导致的基站建设难题?  教你用AI将一段旋律扩展成一首完整的曲子  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  黑客如何利用漏洞与弱口令入侵网站服务器?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  java ZXing生成二维码及条码实例分享  详解Android中Activity的四大启动模式实验简述  如何打造高效商业网站?建站目的决定转化率  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Android使用GridView实现日历的简单功能  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何创建自定义Artisan命令?(代码示例)  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  EditPlus中的正则表达式 实战(4)  android nfc常用标签读取总结  如何用美橙互联一键搭建多站合一网站?  微信小程序 HTTPS报错整理常见问题及解决方案  JS去除重复并统计数量的实现方法  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  🚀拖拽式CMS建站能否实现高效与个性化并存?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel怎么使用artisan命令缓存配置和视图  Laravel如何与Pusher实现实时通信?(WebSocket示例)  微信小程序 配置文件详细介绍  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  详解MySQL数据库的安装与密码配置  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  深入理解Android中的xmlns:tools属性  如何正确下载安装西数主机建站助手?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  手机软键盘弹出时影响布局的解决方法