问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios 怎么在键盘上面添加按钮

发布网友 发布时间:2022-04-30 01:29

我来回答

1个回答

热心网友 时间:2022-06-28 01:25

  想在键盘上添加一个按钮,实时根据键盘不同高度变换按钮位置,再不做输入的时候点击按钮能够隐藏键盘,这种方式在很多软件上都有体现,然后在网上查阅了关于检测键盘高度一些相关知识,以下是一个Demo,代码有很多需要优化地方,仅供需要者参考;   先看效果:   首先是我们在ViewDidLoada()中注册了两个通知,[NSNotificationCenterdefaultCenter],检测键盘动态,一个是键盘将要弹出的时候,另一个是键盘将要退出时候键盘的信息   - (void)viewDidLoad   {   NSLog(@"%@",NSStringFromSelector(_cmd));   [super viewDidLoad];   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardWillShowNotification object:nil];   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];   }   检测键盘消息一个六种,根据字面意思差不多都能说明函数作用   UIKeyboardWillShowNotification 通知将要发布时候显示键盘   UIKeyboardDidShowNotification  通知发布后立即显示键盘   UIKeyboardWillHideNotification 通知发布前撤销键盘   UIKeyboardDidHideNotification 通知发布后撤销键盘   UIKeyboardWillChangeFrameNotification 通知发布前迅速变化的框架的键盘。   UIKeyboardDidChangeFrameNotification 通知发布后立即改变在键盘的框架。   NSLog(@"%@",NSStringFromSelector(_cmd));是我特意加上去的,它能在控制台显示打印出当前程序所调用的函数,我在下面每个函数都加了这一句,当我进行不同操作的时候,打印出被调用函数名,在调试程序时候比较适用吧;   注册消息通知后,实现通知所响应的方法   - (void)handleKeyboardDidShow:(NSNotification *)notification   {   NSLog(@"%@",NSStringFromSelector(_cmd));   NSDictionary *info = [notification userInfo];   CGRect keyboardFrame;   [[info objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame];   CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;   CGFloat distanceToMove = kbSize.height;   NSLog(@"---->动态键盘高度:%f",distanceToMove);   if (exitButton == nil) {   exitButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];   CGRect exitBtFrame = CGRectMake(self.view.frame.size.width-40, self.view.frame.size.height - distanceToMove, 40.0f, 30.0f);   exitButton.frame = exitBtFrame;   [exitButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateNormal];   [self.view addSubview:exitButton];   }   exitButton.hidden=NO;   [self adjustPanelsWithKeyBordHeight:distanceToMove];   [exitButton addTarget:self action:@selector(CancelBackKeyboard:) forControlEvents:UIControlEventTouchDown];   }   在这个函数方法中值得探讨的是关于键盘所包含信息,因为每一次键盘弹出的时候也是动画形式弹出,他的坐标位置大小包含在userInfo的字典中,现在我用   NSLog(@"-->info:%@",info);打印出info对象,这些信息都可以在不同存储类型,取值的时候注意取值方式,此处只是提一提,希望以后有时间在做探讨,   在这一段代码上,后面注释了5行,因为打算当键盘推出的时候,按钮从视图上移除,或者释放按钮,但是都导致了应用程序崩溃,后来就没有释放和移除操作了   - (void)handleKeyboardWillHide:(NSNotification *)notification   {   NSLog(@"%@",NSStringFromSelector(_cmd));   if (exitButton.hidden==NO) {   exitButton.hidden = YES;   }   // if (exitButton.superview)   // {   // [exitButton removeFromSuperview];   // [exitButton release];   // }   }   -(void)adjustPanelsWithKeyBordHeight:(float) height   {   NSLog(@"%@",NSStringFromSelector(_cmd));   if (exitButton) {   CGRect exitBtFrame = CGRectMake(self.view.frame.size.width - 40, self.view.frame.size.height - height-30, 40.0f, 30.0f);   exitButton.frame = exitBtFrame;   [self.view addSubview:exitButton];   }   // UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];   // if (exitButton.superview == nil)   // {   // [tempWindow addSubview:exitButton];   // // 注意这里直接加到window上   // }   }   -(void)CancelBackKeyboard:(id)sender   {   NSLog(@"%@",NSStringFromSelector(_cmd));   [textField resignFirstResponder];   }   - (void)viewDidUnload   {   [self setTextField:nil];   exitButton=nil;   [super viewDidUnload];   // Release any retained subviews of the main view.   }   - (void)dealloc {   [textField release];   [exitButton release];   [[NSNotificationCenter defaultCenter] removeObserver:self];//移除所注册的通知   [super dealloc];   }
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 j基因3型的丙肝治愈后半年,复查一切都正常,请问还会复发吗 丙型肝传染性? 请问ios怎么点击一个按钮来触发多个事件呢? iphone4“音乐”里面的歌曲全部变成了灰色了,既不能播放,也不能删除,怎么办? 小时候得过肝炎治好了,还会被传染吗 丙肝可怕吗,能完全治愈吗?丙肝传染吗? 银行买的金条卖不出去 丙肝病毒干扰素联合利巴韦林治疗7周转阴,同桌吃饭共用餐具还会被传染吗? 丙肝能够治好吗?丙肝会传染给别人吗? 和曾经得过甲肝、丙肝,但现在痊愈的病人接吻是否会被传染 得了丙肝能治好吗?有没有传染 丙肝能治愈吗会传染吗 生活中我们追求的是什么。 丙肝能够治愈么,有没有传染性 陈奕迅最后一句幸福的理由是什么歌 丙肝治愈后会通过性传播吗 丙肝治愈后会传染吗 有钱幸福吗?没钱不幸福的理由是什么? 丙肝治愈后会通过性行为传染给自己的伴侣么? 妻子与丈夫对方都很喜爱用什么词语来表示? 丙肝抗体 抗-HVC是阳性,能治愈吗?传染吗?应注意些什么? iOS怎么控制按钮1秒内只能点一次 ios开发里,按钮不响应单击事件怎么办? iOS上怎样让按钮文本左对齐展示 ios 按钮图片显示不出。 洗衣液瓶子能不能装其他牌子的洗衣液 ios 按钮的 sender.selected= sender.selected 怎么讲解 ios button悬浮在屏幕任意位置 IOS中button的选中和高亮的区别 在IOS开发中,如何给一个按钮上面添加一个拖动的手势? ios中怎么在button中文字自适应大小 ios 一个按钮跳转不同页面 在支付宝怎么买车险 冬天总是起静电怎么办呢 秋冬季节如何防止与消除静电?? 秋冬季节身上有静电时不时给电一下怎样去除呢? 一加9RT怎么关闭来锁屏通知时亮屏? 空心菜的功效与作用有哪些,孕妇可以吃空心菜吗? 一加6t手机屏幕一直亮着怎么办? 男人的精如果男人吃了会怎么样?