iOS 获得键盘的高度 NSNotificationCenter
//在遇到有输入的情况下。由于现在键盘的高度是动态变化的。中文输入与英文输入时高度不同。所以输入框的位置也要做出相应的变化 #pragma mark - keyboardHight -(void)viewWillAppear:(BOOL)animated { [self registerForKeyboardNotifications]; } -(void)viewWillDisappear:(BOOL)animated { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)registerForKeyboardNotifications { //使用NSNotificationCenter 鍵盤出現時 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; //使用NSNotificationCenter 鍵盤隐藏時 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil]; } //实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置 - (void)keyboardWasShown:(NSNotification*)aNotification { NSDictionary* info = [aNotification userInfo]; //kbSize即為鍵盤尺寸 (有width, height) CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;//得到鍵盤的高度 NSLog(@"hight_hitht:%f",kbSize.height); if(kbSize.height == 216) { keyboardhight = 0; } else { keyboardhight = 36; //252 - 216 系统键盘的两个不同高度 } //输入框位置动画加载 [self begainMoveUpAnimation:keyboardhight]; } //当键盘隐藏的时候 - (void)keyboardWillBeHidden:(NSNotification*)aNotification { //do something } //(TextView) 当键盘开始输入前。时行计算与动画加载 -(void)textViewDidBeginEditing:(UITextView *)textView { NSLog(@"gegin animation"); sendMsgTextView =textView; resultCommunityTableview.frame = CGRectMake(0, 36, 320, 150); //动画加载 [self begainMoveUpAnimation:0.0 ]; } //关闭键盘(TextView) 换行时。隐藏键盘 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { resultCommunityTableview.frame = CGRectMake(0, 36, 320, 376); if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES; } //输入结束时调用动画(把按键。背景。输入框都移下去) -(void)textViewDidEndEditing:(UITextView *)textView { NSLog(@"tabtabtab"); [self endEditAnimation]; //释放 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; } //判断当前输入法 -(void)textViewDidChangeSelection:(UITextView *)textView { NSLog(@"wewe:%@",[[UITextInputMode currentInputMode] primaryLanguage]); /* if ([[UITextInputMode currentInputMode] primaryLanguage] == @"en-US") { NSLog(@"en-US"); } else { NSLog(@"zh-hans"); } */ }
分类:
objective-c
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架