如何让程序能获取我在操作系统中的任意键盘输入

> 问题详情
本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是() A.命令解释程序B.中断处理程序C.
悬赏:0&答案豆
提问人:匿名网友
发布时间:
本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是()A.命令解释程序B.中断处理程序C.系统调用程序D.用户登录程序请帮忙给出正确答案和分析,谢谢!
论文写作技巧
您可能感兴趣的试题
1下列选项中,不属于网络体系结构中所描述的内容是(  )A.网络的层次&&&&&&&&&&&&&&&&&&&&&&&B.每一层使用的协议C.协议的内部实现细节&&&&&&&&&&&&&&&D.每一层必须完成的功能2在下图所示的采用“存储-转发”方式分组的交换网络中,所有链路的数据传输速度为100mbps,分组大小为1000B,其中分组头大小20B,若主机H1向主机H2发送一个大小为980000B的文件,则在不考虑分组拆装时间和传播延迟的情况下,从H1发送到H2接收完为止,需要的时间至少是(  )A.80ms&&&B.80.08ms&&&C.80.16ms&&&D.80.24ms
我有更好的答案
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……IOS 键盘的展示与关闭,以及移动显示(UITextView处理完整版)(完美中文键盘输入避免触摸无效,做双重保障) - 操作系统当前位置:& &&&IOS 键盘的展示与关闭,以及移动显示(UITextView处IOS 键盘的展示与关闭,以及移动显示(UITextView处理完整版)(完美中文键盘输入避免触摸无效,做双重保障)&&网友分享于:&&浏览:0次IOS 键盘的显示与关闭,以及移动显示(UITextView处理完整版)(完美中文键盘输入避免触摸无效,做双重保障)
问题描述:在view controller 上面的view 上添加 scrollview ,在scrollview上添加 textview 处理(完美版:中文键盘输入避免触摸无效,做双重保障)
下面的文章是取别的文章做研究,得出自己的处理方法:在文章的最后总结部分。
IOS 键盘的显示与关闭
在每一个IOS应用中,几乎不可避免的要进行文本输入操作,例如要求用户填写登陆注册信息,进行话题的评论回复,等等。用到的文本输入组件有UITextField,UITextView,对于这两个组件的相关属性和方法想必大家都很熟悉,但貌似对于键盘的显示或隐藏过程貌似常常不是很清楚,其实本人也是一知半解,所以趁此做简单的总结,基本上以下描述出自于官方的文档,并没有什么更改。
1.开启键盘面板
& & & &当用户触击某一个view时,系统会自动指定该view为第一响应对象(first responser),(关于第一响应对象的我们估计可以把它看做一个标志位,每个贴上该标记的对象都能成为first responser,这样可能要好理解些)当某个包含了可编辑文本的view(UITextField或UITextView)成为第一响应对象后,该view会为文本输入开启一个&编辑会话&(editing session),之后该view会告知系统去开启并显示键盘,如果当前键盘处于隐藏状态,那么它会根据当前设备的旋转方向,自动调整并从application的底部以滑动动画形式出现,这通常都是我们看到并已熟知的键盘显示方式;如果当前键盘已处于显示状态,由于第一响应对象这个标记已被设置到当前的view上,所以键盘输入也被重定向到该view上了。
& & & &因为当一个view设置第一响应对象后,键盘会自动显示,通常情况下我们不用做其它任何事情。但是,有时我们可以调用可编辑文本view的becomeFirstResponder方法,来显示键盘。
& & & &如某一UITextField类的名为theTextField对象可调用以下方法:
[theTextField
becomeFirstResponder];
& & & &在可编辑view上调用该方法达到的效果,与用户触击该view的效果是一致的,首先会使该view成为第一响应对象,之后键盘被调用显示。&
& & &如果在应用中某一功能上需要同时管理几个文本输入,最后的做法是跟踪当前是哪一个view为第一响应对象,因为在之后的操作中我们可以选择性的关闭键盘。
2.关闭键盘
& & & &以上,我们可以看到,键盘的显示为IOS系统的自发行为,我们在程序上不用做任何处理,但关闭键盘的处理却于此相反:系统不会自动关闭键盘,在应用中我们自己要负责在合适的时间关闭键盘。其实这个洛是显而易见的,开启键盘的目的是为了输入文本,但关闭键盘的逻辑却因具体应用的处理逻辑的不同而不同。但通常情况下也只是在用户的某一行为下才会关闭键盘,例如用户触击了键盘的“Return”和“Done”按钮;或者是在填完并提交一个表单后要关闭键盘,所有的这些有IOS基本的用户界面行为设置,也有我们的应用功能决定的用户界面设置。
& & & 要关闭键盘,可以调用当前是第一响应对象的某一个包含可编辑文本view的resignFirstResponder方法。从字面意义上来看,resignFirstResponder与becomeFirstResponder方法的处理逻辑和作用是相反的,调用了resignFirstResponder的view会注销其第一响应对象的状态,并结束之前开启的“编辑会话”,并关闭键盘。也就是说,假如之前的theTextField对象当前为第一响应对象,要关闭键盘可以调用以下方法:
[theTextField
resignFirstResponder];
3.First Responser对象
& & & 对于first response对象,其实是在Application中那个第一个接受系统事件的对象,如键盘事件(key events),动作事件(motion events),以及action消息。在此不做介绍。
http://my.oschina.net/hmj/blog/99489
IOS 点击空白处隐藏键盘的几种方法
IOS7 点击空白处隐藏键盘的几种方法
IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏,以下我总结出了几种隐藏键盘的方法:
首先说明两种可以让键盘隐藏的Method:
1、[view&endEditing:YES]&&这个方法可以让整个view取消第一响应者,从而让所有控件的键盘隐藏。
2、[textFiled resignFirstResponder]&这个则是比较常用的让某个textFiled的键盘隐藏。
接下来就是几种实现方式:
第一种: 使用view的touchesBegan:触摸事件来实现对键盘的隐藏,当点击view的区域就会触发这个事件
[html]&view
plaincopyprint?
第二种:创建自定义的触摸手势来实现对键盘的隐藏:
[html]&view
plaincopyprint?
第三种:修改xib中UIView的Custom class为UIControl,UIControl是一些常用控件如UIButton的父类,是UIView的派生类,实现了对触摸和下按的封装。
1、首先设置xib中得UIView的Custom class为UIControl
2、设置关系事件,将xib中得UIView拖到.h区中
设置好事件为Touch Up Inside
3、编写隐藏代码:
[html]&view
plaincopyprint?
好了,以上是三种比较常用的隐藏键盘的方法,每种都可以用于不同的场合和它的利与弊,就看如何运用了。
http://blog.csdn.net/swingpyzf/article/details/
UITextView的用法及技巧(ios7下光标bug解决方案)
一、新建一个textView
UITextView
*textView = [[[UITextView alloc] init] autorelease];
textView.delegate
textView.font
= [UIFont systemFontOfSize:16];
textView.contentInset
= UIEdgeInsetsMake(-11, -6, 0, 0);
textView.scrollEnabled
becomeFirstResponder];
[self.view
addSubview:textView];
二、键盘操作
textView.returnKeyType
= UIReturnKeyD
textView.keyboardType
= UIKeyboardTypeD
三、隐藏键盘的几种方式
个人还是认为最方便的是在键盘上加上一个ToolBar,在上面加上一个按钮来隐藏键盘
①在键盘上加上隐藏按钮
* topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
setBarStyle:UIBarStyleBlack];
UIBarButtonItem
* button1 =[[UIBarButtonItem& alloc]initWithBarButtonSystemItem:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem
* button2 = [[UIBarButtonItem& alloc]initWithBarButtonSystemItem:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem
* doneButton = [[UIBarButtonItem alloc]initWithTitle:@&完成&style:UIBarButtonItemStyleDone&
target:self action:@selector(resignKeyboard)];
* buttonsArray = [NSArray arrayWithObjects:button1,button2,doneButton,nil];&&&&
setItems:buttonsArray];
setInputAccessoryView:topView];
(void)resignKeyboard
&&&&[textView
resignFirstResponder];
还有几种也可隐藏键盘的方式
②用回车键,前提是你的textView中不需要用到回车键
-(BOOL)textView:(UITextView
*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
isEqualToString:@&\n&])
resignFirstResponder]; returnNO;
&returnYES;
③触摸空白处隐藏键盘
-(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event
&&&&[textView
resignFirstResponder];
四、使键盘不挡住输入框
& & 在view中添加一个子view,设置此子view的tag值为1000,在此view上添加一个textView和一个发送按钮,如下图;我们要达到textView的键盘弹出时,整个View往上平移,键盘消失,view往下平移的效果,模拟发送短信的界面。
设置textView圆角
[self.textView.layer
setCornerRadius:10];
①、在viewWillAppear中添加键盘监听事件
&&&&[[NSNotificationCenter
defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
&&&&[[NSNotificationCenter
defaultCenter] addObserver:self selector:@selector(keyboardDidHidden) name:UIKeyboardDidHideNotification object:nil];
②、完成①selector中键盘弹出keyboardDidShow:和消失keyboardDidHidden方法
& & 在.m文件#import后面添加
kAnimationDuration 0.2
kViewHeight 56
-(void)keyboardDidShow:(NSNotification
*)notification
&&&&NSValue
*keyboardObject = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
&&&&CGRect
&&&&[keyboardObject
getValue:&keyboardRect];
&&&&[UIView
beginAnimations:nil context:nil];
&&&&[UIView
setAnimationDuration:kAnimationDuration];
&&&&[(UIView
*)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-keyboardRect.size.height-kViewHeight, 320, kViewHeight)];
&&&&[UIView
commitAnimations];
-(void)keyboardDidHidden
&&&&[UIView
beginAnimations:nil context:nil];
&&&&[UIView
setAnimationDuration:kAnimationDuration];
&&&&[(UIView
*)[self.view viewWithTag:1000] setFrame:CGRectMake(0, self.view.frame.size.height-kViewHeight, 320, kViewHeight)];
&&&&[UIView
commitAnimations];
iOS7光标问题
PS:有网友遇到textView在ios7上出现编辑进入最后一行时光标消失,看不到最后一行,变成盲打,stackOverFlow网站上有大神指出,是ios7本身bug,加上下面一段代码即可(网友调试得出,在此mark一下,有问题,欢迎大神们指出)
-(void)textViewDidChange:(UITextView
*)textView {
&&&&CGRect
line = [textView caretRectForPosition:
&&&&&&&&&&&&&&&&&&&textView.selectedTextRange.start];
&&&&CGFloat
overflow = line.origin.y + line.size.height
( textView.contentOffset.y + textView.bounds.size.height
textView.contentInset.bottom - textView.contentInset.top );
overflow & 0 ) {
&&&&&&&&CGPoint
offset = textView.contentO
&&&&&&&&offset.y
+= overflow + 7;
&&&&&&&&[UIView
animateWithDuration:.2 animations:^{
&&&&&&&&&&&&[textView
setContentOffset:offset];
&&&&&&&&}];
http://my.oschina.net/joanfen/blog/140143
说明可以直接拿来用,从下面往上看==============
// 增加textview 点击处理效果
-(void) touchesInTextView:(UITapGestureRecognizer*)tap
if (!bisShowKeyboard)
// 向上移动
[self keyboardShow:nil];
// 显示键盘
[self.textView becomeFirstResponder];
// 向下移动
[self keyboardHide:nil];
// 隐藏键盘
[self.textView resignFirstResponder];
&/pre&&pre code_snippet_id=&677143& snippet_file_name=&blog__3193943& name=&code& class=&objc&&// 键盘弹出时
-(void)keyboardShow:(NSNotification *)notification
bisShowKeyboard = YES;
//设置动画
[UIView beginAnimations:nil context:nil];
//定义动画时间
[UIView setAnimationDuration:kAnimationDuration];
// 重新设置移动位置
rect = self.scrollView.
rect.origin.y -= 150;
self.scrollView.frame =
[UIView commitAnimations];
//键盘消失时
-(void)keyboardHide:(NSNotification *)notification
bisShowKeyboard = NO;
//设置动画
[UIView beginAnimations:nil context:nil];
//定义动画时间
[UIView setAnimationDuration:kAnimationDuration];
rect = self.scrollView.
rect.origin.y = 0;
self.scrollView.frame =
[UIView commitAnimations];
// 优化textView使用
-(void) optimizeTextView
// 设置代理 需在interface中声明UITextViewDelegate
self.textView.delegate =
// 字体大小
self.textView.font = [UIFont systemFontOfSize:16];
// 添加滚动区域
self.textView.contentInset = UIEdgeInsetsMake(-11, -6, 0, 0);
// 是否可以滚动
self.textView.scrollEnabled = YES;
// 获得焦点(键盘显示)
[self.textView becomeFirstResponder];
bisShowKeyboard = YES;
// 返回键的类型
self.textView.returnKeyType = UIReturnKeyD
// 键盘类型
self.textView.keyboardType = UIKeyboardTypeD
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchesInTextView:)];
// 设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
tapGestureRecognizer.cancelsTouchesInView = NO;
// 将触摸事件添加到当前view
[self.textView addGestureRecognizer:tapGestureRecognizer];
- (void)viewDidLoad {
[super viewDidLoad];
bisShowKeyboard = NO;
// 默认不显示键盘
// 优化textView使用
[self optimizeTextView];
.....................
补充说明:
以上在英文输入模式下没有问题,但是在中文输入下出现
touchesInTextView{} & 中文输入完成,点击不能调用,无法隐藏键盘。 &
解决方法: 在外部背景scrollview &添加手势touches
对其进行 隐藏处理:
viewdidload 中添加:
&span style=&color:#ff0000;&&
// 选择问题类型
self.scrollView.userInteractionEnabled=YES;
UITapGestureRecognizer * tapscrollview =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(ClickScrollViewHideKeyboard)];
[self.scrollView addGestureRecognizer:tapscrollview];
self.textView.userInteractionEnabled=YES;
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchesInTextView:)];
// 设置成NO表示当前控件响应后会传播到其他控件上,默认为YES。
tapGestureRecognizer.cancelsTouchesInView = NO;
// 将触摸事件添加到当前view
[self.textView addGestureRecognizer:tapGestureRecognizer];
同样用条件判断,制作隐藏处理:
// 隐藏藏 键盘
-(void) ClickScrollViewHideKeyboard
if (bisShowKeyboard)
// 向下移动
[self keyboardHide:nil];
// 隐藏键盘
[self.textView resignFirstResponder];
这样是可以隐藏键盘的,单再次点击 &textview 继续进行编辑时之前的 :
-(void) touchesInTextView:(UITapGestureRecognizer*)tap
无法响应,手势在中文状态下无效了,但此时键盘依然会出现,
不知道是哪里出现调用的,可能是默认edit控件有的。
方法:添加delegate 处理方法,做二次判别处理。双重保障:
- (void)textViewDidBeginEditing:(UITextView *)textView
NSLog(@&BeginEditing&);
if (!bisShowKeyboard)
// 向上移动
[self keyboardShow:nil];
// 显示键盘
[self.textView becomeFirstResponder];
- (void)textViewDidEndEditing:(UITextView *)textView
NSLog(@&EndEditing&);
if (bisShowKeyboard)
// 无调用仍需保留以免中下出现不能隐藏问题
// 向下移动
[self keyboardHide:nil];
// 隐藏键盘
[self.textView resignFirstResponder];
- (void)textViewDidBeginEditing:(UITextView *)textView
-(void) touchesInTextView:(UITapGestureRecognizer*)tap
无效时,发挥作用。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有按键/键盘输入/输入法 - Android开发社区 - 开源中国社区
共有88篇文章,第1页,共5页
10:52|7次评论|59096次阅读
如题,我想在做其它事情之前,去判断当前软键盘是不是弹出状态或着隐藏状态
15:42|1次评论|22829次阅读
InputMethodManager是一个用于控制显示或隐藏输入法面板的类(当然还有其他作用)。 获取InPutMethodManager的方法很简单。 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 分别介绍其使用方法。 1.showSoftInput(View v...
14:02|7次评论|20706次阅读
Android软键盘弹出和关闭会出发什么方法被调用?如何监听软键盘弹出和关闭呢
21:37|7次评论|19219次阅读
学习目标: 实现新的输入法 学习目的: 掌握Android输入法框架 学习收获: Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能。IMF设计用来支持不同的IME,包括了soft keyboard,hand-writing re...
15:15|4次评论|14502次阅读
软键盘的弹出和关闭的监听 哪位高手知道
14:13|5次评论|13764次阅读
23:56|4次评论|12661次阅读
为什么android按键事件中KeyEvent.ACTION_UP是对应按键“按下”,KeyEvent.ACTION_DOWN对应按键“抬起”,这个在我们中国人的思维上不是错位了吗?还是我搞错了呢?
23:34|2次评论|12013次阅读
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入。 解决办法: 方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.Layo...
10:42|23次评论|11381次阅读
客户端:是android 应用,将手机的指令发送到服务端。 服务端:是android的一个服务,收到客户端的指令,给android系统发送相应的键盘或鼠标元器件。 问题:通讯问题好解决,可以用WIFI,蓝牙等。但是服务端收到指令后怎么给 android系统送相应的键盘或鼠标事件。比如鼠标向...
21:21|2次评论|10282次阅读
12:59|6次评论|8313次阅读
在Android中可以对HOME键进行屏蔽。可在最新的ANDROID 4.0中貌似这个功能被取消掉了。 所以,有哪位大虾能帮忙提供解决之道。谢谢~~~~
20:06|7次评论|7943次阅读
11:12|1次评论|7781次阅读
输入法的例子和源代码看了不少时间了,看得头很晕,很郁闷。静下心来把整个代码想了一遍,其实大部分代码都在处理绘制界面,以及事件的处理,核心代码很少,都被底层封装得很完美了。 先看看一般输入法的界面: 分为两个部分,上部分是候选窗口(CandidateView),用来显示...
14:08|0次评论|6755次阅读
Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。
那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少?我们能否在应用程序中进行自定义的控制?这些是本文要讨论的重点。...
10:10|5次评论|5632次阅读
在android中经常会自定义组件,自定义的组件可以通过继承系统的已经有的组件来实现。也可以直接继承自View或者是SurfaceView 界面。有时候想在这些界面中输入文字,例如游戏中经常用到的SurfaceView上让用户输入文字。由于多数android都没有实体的输入键盘,另外 android中...
08:53|0次评论|5231次阅读
在android的开发中,将整个页面只使用LinearLayout编辑时,当点击输入框时,系统自带的虚拟键盘会遮挡住输入框,效果如下图,遮挡住了MSN输入框
此页面不出现虚拟键盘时是: 解决办法是在整个页面配置文件中,在LinearLayout布局外加入 &ScrollView xmlns:android=&htt...
10:20|3次评论|4750次阅读
关于Android软键盘弹出,会把原来的界面挤上去的问题,这个问题,我记得前面不知道是在这里还是在eoe上看到过此问题,当时没有注意认真看,(真是个坏毛病啊),现在求教各位,但是我发现如果是TableLayout不会出现此类问题,为何,以及如何解决? 就是让软键盘出现在Activ...
17:48|1次评论|4190次阅读
1. 安装需要用的默认输入法(.apk)到system/app
2. 修改文件 frameworks/base/packages/SettingsProvider/res/values/defaults.xml
&string name=&default_input_method& translatable=&false&&搜狗输入法 ID&/string&
10:50|1次评论|3855次阅读
处理这个其实很简单的 1、给整个activity设置一个点击事件 2、然后处理点击事件,加上两句代码: InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
&&&&&&// edit.setCursorVisible(false);//失去光标
&&&&&&imm.hideSoftI...
14:42|2次评论|3768次阅读
本文章主要讲述Android智能机上,应用捕获按键的处理。遥控器上按键分为两种,普通按键和热键。普通按键就是我们常用的数字键,上下左右功能键,设置,返回,确认等按键。而在android上,对于遥控器的映射中,规定某些按键应用是无法拦截到的,我们称此为热键...
Created with Sketch.

我要回帖

更多关于 正在执行的程序被称为 的文章

 

随机推荐