隐藏软键盘的另一种方法
来源:互联网 发布:lof基金与etf基金知乎 编辑:程序博客网 时间:2024/05/11 05:44
iPhone软键盘占据216像素高,这对于iPhone仅仅320*480像素的屏幕来说,不能说不是一个很糟糕的事情。
为了隐藏iPhone的软键盘,程序员们想出了各种招式。最常见的莫过于结合UITextFieldDelegate的textFieldDidBeginEditing方法和[textFieldresignFirstResponder]方法了。
但想象一下下面的场景,这种方法就无能为力了。
当你点击“键盘”时,textView becomeFirstResponder被调用,于是键盘弹出。当你点击“常用意见”时, ,键盘被隐藏。但与此同时,TextView中的文本仍然是可以编辑的(你可以看见光标闪烁)。
如果你使用[textView resignFirstResponder]隐藏键盘,则Text View将无法获得焦点,也许你仍然可以用下面的那些批注按钮在TextView中插入文字,但你不知道插入点是在哪里(没有闪烁的光标你可能不知道自己正在编辑的文本位置),你也不可能选中一段文字,然后用一个“已阅”来替换它。总而言之,resignFirstResponder之后,TextView的编辑功能非常之不好用。
让我们来换一种思路,也许我们不需要让键盘不弹出,而是把它“隐藏”起来,不要挡住我们下面的那一排编辑按钮。我们知道iPhone的许多控件仍然继承自UIView,如果键盘也是这样,那么我们找出键盘所在的UIView并把它的hidden设置为YES?在textViewDidBeginEditing方法中,我们可以用下列代码找出键盘的UIView并设置其hidden属性。代码在iOS4.3上测试通过(真机)。
-(void)textViewDidBeginEditing:(UITextView *)textView{
UIView* kbView=nil;
NSArray *ws = [[UIApplication sharedApplication] windows];
for(UIView *w in ws){
NSArray *vs = [w subviews];
for(UIView *v in vs){
if([[NSString stringWithUTF8String:object_getClassName(v)] isEqualToString:@"UIPeripheralHostView"]){
kbView=v;
break;
}
}
}
if (segmentControl.selectedSegmentIndex==1) {
kbView.hidden=YES;
}else{
kbView.hidden=NO;
[textview becomeFirstResponder];
}
}
差不多就是这样了,还有一点小问题。在UISegmentControl控件的valueChanged方法中,我们需要把Text View先设置为resignFirstResponder然后再becomeFirstResponder。如果不这样,当你从“常用意见”切换到“键盘”时,键盘不会显示。仔细想想,你知道这是为什么。
- 隐藏软键盘的另一种方法
- 隐藏软键盘的方法
- 隐藏软键盘的方法
- Android 完美的隐藏软键盘方法
- Android中隐藏软键盘的方法
- 点击屏幕隐藏软键盘的方法
- 隐藏和显示 软键盘的方法
- EditText隐藏软键盘的方法
- 显示、隐藏软键盘的硬方法
- android隐藏软键盘的方法
- Android隐藏软键盘的方法
- Android PopupWindow 隐藏软键盘的方法
- 最有效的隐藏软键盘方法
- Ubuntu 下另一种隐藏文件的方法
- Android软键盘的弹出 隐藏部分界面的方法
- windowsphone7 关于隐藏虚拟软键盘(SIP)的方法
- Android中显示/隐藏软键盘的相关方法
- android 软键盘遮挡或隐藏 edittext的方法
- 12位二进制异步计数器74HC4040引脚图,功能及时序图简介
- 判断两线段是否相交的C#代码
- Linux常用命令全集
- Ajax的概念
- Failed to find parameter: c0-scriptName
- 隐藏软键盘的另一种方法
- ReSTful WebService
- launcher 启动过程
- 13.5.1 将数据写到 Excel
- [源码包编译]关于/etc/ld.so.conf、ldconfig、pkg-config、PKG_CONFIG_PATH的一篇文章
- VRRP协议详解
- oracle10g AWR Report 分析(4)
- C语言学习一些总结
- alumnus system - jxl导入导出excel java