如何获得点击iphone ios键盘done改成中文上的done 后的事件

38276人阅读
IOS开发(19)
一.键盘通知
当文本View(如,,内的输入框)进入编辑模式成为first
responder时,系统会自动显示键盘。成为firstresponder可能由用户点击触发,也可向文本View发送消息触发。当文本视图退出first
responder时,键盘会消失。文本View退出first responder可能由用户点击键盘上的Done或Return键结束输入触发,也可向文本View发送消息触发。
当键盘显示或消失时,系统会发送相关的通知:
通知消息中的字典中包含键盘的位置和大小信息,对应的key为
UIKeyboardFrameBeginUserInfoKey,UIKeyboardFrameEndUserInfoKey对应的Value是个NSValue对象,内部包含CGRect结构,分别为键盘起始时和终止时的位置信息。
UIKeyboardAnimationCurveUserInfoKey对应的Value是NSNumber对象,内部为类型的数据,表示键盘显示或消失的动画类型。
UIKeyboardAnimationDurationUserInfoKey对应的Value也是NSNumber对象,内部为double类型的数据,表示键盘h显示或消失时动画的持续时间。
例如,在UIKeyboardWillShowNotification,UIKeyboardDidShowNotification通知中的userInfo内容为
userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 0;
UIKeyboardAnimationDurationUserInfoKey = &0.25&;
UIKeyboardBoundsUserInfoKey = &NSRect: {{0, 0}, {320, 216}}&;
UIKeyboardCenterBeginUserInfoKey = &NSPoint: {160, 588}&;
UIKeyboardCenterEndUserInfoKey = &NSPoint: {160, 372}&;
UIKeyboardFrameBeginUserInfoKey = &NSRect: {{0, 480}, {320, 216}}&;
UIKeyboardFrameChangedByUserInteraction = 0;
UIKeyboardFrameEndUserInfoKey = &NSRect: {{0, 264}, {320, 216}}&;
在UIKeyboardWillHideNotification,UIKeyboardDidHideNotification通知中的
userInfo内容为:
userInfo = {
UIKeyboardAnimationCurveUserInfoKey = 0;
UIKeyboardAnimationDurationUserInfoKey = &0.25&;
UIKeyboardBoundsUserInfoKey = &NSRect: {{0, 0}, {320, 216}}&;
UIKeyboardCenterBeginUserInfoKey = &NSPoint: {160, 372}&;
UIKeyboardCenterEndUserInfoKey = &NSPoint: {160, 588}&;
UIKeyboardFrameBeginUserInfoKey = &NSRect: {{0, 264}, {320, 216}}&;
UIKeyboardFrameChangedByUserInteraction = 0;
UIKeyboardFrameEndUserInfoKey = &NSRect: {{0, 480}, {320, 216}}&;
在中,有如下描述Note: The rectangle contained in the UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey properties of the userInfo dictionary should be used only for the size information it contains. Do not use the
origin of the rectangle (which is always {0.0, 0.0}) in rectangle-intersection operations. Because the keyboard is animated into position, the actual bounding rectangle of the keyboard changes over time.
但从实际获取的信息来看,矩形的origin并不为{0.0, 0.0},这里应该不准确。
二.文本对象与WebView键盘设置
和都遵循协议,在UITextInputTraits协议中定义了设置键盘的属性,有
1.&:键盘类型,如,,,等
2.&:键盘Return键显示的文本,默认为”Return”,其他可选择的包括Go,Next,Done,Send,Google等。
3.&:键盘外观,默认为,即上图中的浅兰色不透明背景,另外还有一种为,
键盘背景为黑色半透明,用于在警告框输入时显示,例如appStore中输入密码时:
若想显示黑色键盘又不想透明露出底部视图,可以将键盘配置成Alert类型的,然后监听键盘显示的广播通知,在显示键盘时在键盘底部增加一不透明黑色背景视图。
注:在苹果的键盘示例程序中,将UITextView键盘类型更改为UIKeyboardAppearanceAlert,在iPad模拟器中运行键盘并没有出现黑色透明的效果,不知为何?
在iPhone中UIKeyboardAppearanceAlert设置有效。
4.:文本大小写样式,见。
5.:是否自动更正,见。
6.:拼写检查设置,见。
7.:是否在无文本时禁用Return键,默认为NO。若为YES,则用户至少输入一个字符后Return键才被激活。&
8.:若输入的是密码,可设置此类型为YES,输入字符时可显示最后一个字符,其他字符显示为点。
本身不直接遵循协议,但同样可设置其内部输入部件的键盘属性。如中所述。
设置autocorrect, auto-capitalization属性。
&input type=&text& size=&30& autocorrect=&off& autocapitalization=&on&&
设置键盘类型:
Text: &input type=&text&&&/input&Telephone: &input type=&tel&&&/input&URL: &input type=&url&&&/input&Email: &input type=&email&&&/input&Zip code: &input type=&text& pattern=&[0-9]*&&&/input&
三. 使用键盘通知调整文本视图位置
当文本视图成为First Responser时在窗口底部会显示出键盘,显示的键盘很可能会将文本视图盖住从而无法看到编辑的效果。键盘通知的一大用途即在键盘显示或隐藏时获取到键盘的位置信息,从而可以调整窗口中的文本视图位置或大小,使其可以在键盘上方显示。
中的节在键盘显示和消失通知中,通过调整内容视图的和来保证编辑的文本视图不会被键盘盖住。
1.在初始化(或)时,注册处理键盘通知的方法。
- (void)registerForKeyboardNotifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
2.在键盘显示的通知事件处理中获取到即将显示键盘的大小,将的设置为键盘的frame区域,同样设置保证滚动条不会被键盘盖住。获取到编辑文本视图的原点位置,与键盘显示区域比较,若会被键盘覆盖,则调整以使其在键盘上方
// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
scrollView.contentInset = contentI
scrollView.scrollIndicatorInsets = contentI
// If active text field is hidden by keyboard, scroll it so it's visible
// Your application might not need or want this behavior.
CGRect aRect = self.view.
aRect.size.height -= kbSize.
if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height);
[scrollView setContentOffset:scrollPoint animated:YES];
3.在键盘消失的通知处理事件中,简单的将UIScrollView恢复即可
// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
UIEdgeInsets contentInsets = UIEdgeInsetsZ
scrollView.contentInset = contentI
scrollView.scrollIndicatorInsets = contentI
在苹果的示例程序中同样演示了使用键盘通知来调整文本视图位置的代码,其中使用了键盘通知中的键盘动画时间,从而使文本视图移动的动画与键盘的显示和消失同步。
- (void)keyboardWillShow:(NSNotification *)notification {
Reduce the size of the text view so that it's not obscured by the keyboard.
Animate the resize so that it's in sync with the appearance of the keyboard.
NSDictionary *userInfo = [notification userInfo];
// Get the origin of the keyboard when it's displayed.
NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
// Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.
CGRect keyboardRect = [aValue CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
CGFloat keyboardTop = keyboardRect.origin.y;
CGRect newTextViewFrame = self.view.
newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;
// Get the duration of the animation.
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationD
[animationDurationValue getValue:&animationDuration];
// Animate the resize of the text view's frame in sync with the keyboard's appearance.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
textView.frame = newTextViewF
[UIView commitAnimations];
- (void)keyboardWillHide:(NSNotification *)notification {
NSDictionary* userInfo = [notification userInfo];
Restore the size of the text view (fill self's view).
Animate the resize so that it's in sync with the disappearance of the keyboard.
NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval animationD
[animationDurationValue getValue:&animationDuration];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
textView.frame = self.view.
[UIView commitAnimations];
关于调整文本视图大小的代码,还可以参考。
还可以在键盘通知中实现自定义键盘,例如中使用键盘通知在数字键盘中增加Return键,还可参考
注:若在同一窗口中有两个UITextField,当第一个UITextField成为First Responser时,开始显示键盘并接收到UIKeyboardWillShowNotification,UIKeyboardDidShowNotification通知,当First Responser转移到第二个UITextField时,键盘会一直显示,此时不会收到WillShow和DidShow的通知。
四.使用inputAccessoryView与inputView定制输入视图
和属性在中定义,为readonly的属性,但在和中重新定义为了readwrite的属性,可以由用户赋值。若的不为nil,则当文本视图成为first
responder时,不会显示系统键盘,而是显示自定义的inputV若不
为nil,则inputAccessoryView会显示在系统键盘或定制inputView的上方。当使用inputView时,仍然会有WillShow,DidShow,WillHide,DidHide的键盘通知,通知中的BeginFrame与EndFrame为系统键盘(或inputView)与inputAccessoryView一起的frame。
自定义inputAccessoryView非常常见,如编辑短信时的输入框
Web页面输入键盘
新浪微博评论界面
若想在输入时不使用系统键盘,而使用自定义的键盘,则可以设置inputView,如随手记中的金额输入时的键盘
若不想使用键盘输入,想从UIPickerView或UIDatePicker中选择,可设置inputView为对应的Picker视图,如图
苹果键盘示例程序演示了inputAccessoryView的使用方法。
&演示了在UIPickerView之上添加Toolbar的代码。
在标准视图中只有UITextField和UITextView将inputView和inputAccessoryView重新定义为了readwrite类型,若想在自定义视图中使用,需要在自定义视图中重新定义inputView和inputAccessoryView属性。见。
本文出自 清风徐来,水波不兴 的博客.
本文永久链接: //iphone_keyboard_notification_custom_keyboard/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:458413次
积分:3136
积分:3136
排名:第11466名
原创:32篇
转载:43篇
(1)(2)(1)(7)(2)(23)(2)(4)(1)(2)(2)(4)(2)(9)(1)(1)(1)(1)(8)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'1、点击编辑区以外的地方(UIView)
2、点击编辑区域以外的地方(UIControl)
3、使用制作收起键盘的按钮
4、使用判断输入字元
5、关于键盘遮蔽的问题
1,点击编辑区以外的地方(UIView)
这是一种很直觉的方法,当不再需要使用虚拟键盘时,只要点击虚拟键盘和编辑区域外的地方,就可以将键盘收起,下面程式码是在 UIView 中内建的触碰事件方法函式,您可以参考 Touch Panel / 触碰萤幕 / 压力感应器的基本使用方式一文,找到更多关于触碰事件的方法函式。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { &
& & if (![myTextView isExclusiveTouch]) { &
& & & & [myTextView resignFirstResponder]; &
如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIView 才行。
画面的 Custom Class 为 UIView
2. 点击编辑区域以外的地方(UIControl)
收起虚拟键盘的方式与前一种相同,但是如果你的触碰事件里已经且写满了程式码,那么就可以考虑使用,UIControl 的 Touch Up Inside 事件来收起键盘,方法是将以下程式码与 UIControl 的 Touch Up Inside 事件连结即可。
- (IBAction)dismissKeyboard:(id)sender { &
& & [myTextView resignFirstResponder]; &
&如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIControl 才行。
&画面的 Custom Class 为 UIControl
&将收起键盘的方法与 UIControl 事件连结
&3. 使用制作收起键盘的按钮
当没有编辑区域以外的地方可供点击来收起键盘,自己制作一个按钮来收起目前的虚拟键盘,也是一个不错的方法,由于按钮必须在虚拟键盘出现才能显示于画面上,因此必须借用 NSNotificationCenter 来帮助我们判断目前键盘的状态。
首先在 viewDidLoad: 事件中,向 NSNotificationCenter 进行註册,告诉 NSNotificationCenter 我们的 doneButtonshow: 方法函式。
- (void)viewDidLoad { &
& &[super viewDidLoad]; &
& &[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (doneButtonshow:) name: UIKeyboardDidShowNotification object:nil]; &
现在每当虚拟键盘出现时,就会自动呼叫我们自定义的 doneButtonshow: 方法函式,接下来只要在该方法函式里定义按钮出现的方法即可。
-(void) doneButtonshow: (NSNotification *)notification { &
& &doneButton = [UIButton buttonWithType: UIButtonTypeRoundedRect]; &
& &doneButton.frame = CGRectMake(0, 228, 70, 35); &
& &[doneButton setTitle:@&完成编辑& forState: UIControlStateNormal]; &
& &[doneButton addTarget: self action:@selector(hideKeyboard) forControlEvents: UIControlEventTouchUpInside]; &
& &[self.view addSubview:doneButton]; &
最后是实作按钮按下去时的 hideKeyboard: 方法函式,务必记得要在函式中移除该按钮。
-(void) hideKeyboard { &
& &[doneButton removeFromSuperview]; &
& &[myTextView resignFirstResponder]; &
4. 使用判断输入字元
如果要使用输入特定字元(例如 return 换行字元)来收起键盘,必须先在类别内的 @interface 区段採用 &协定,您可以参考 Protocol 协定的使用方式一文,获得更多关于协定的资讯。
在采用 &协定之后,接着实作出协定内的 textView:shouldChangeTextInRange:replacementText:方法函式,此方法函式会在字元输入时触发,而回传的 BOOL 值则代表该字元是否要作用,下列程式码就是在此方法函式中,使用判断输入字元的方式来收起虚拟键盘(判断字元为 return 换行字元)。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { &
& & if ([text isEqualToString:@&\n&]) { &
& & & & [myTextView resignFirstResponder]; &
& & & & return NO; &
& & return YES; &
最后别忘记在 viewDidLoad: 事件中,将 UITextView 的代理物件指向自己,这样程式才能正确找到实作 &协定方法函式的类别。
- (void)viewDidLoad &{ &
& & [super viewDidLoad]; &
& & myTextView.delegate = &
5. 关于键盘遮蔽的问题
如果您在实作上有遭遇到键盘遮蔽编辑区域的问题,可以参考使用 Animation 解决小键盘挡住 UITextField 的问题一文,透过 Core Graphic 的 Animation 功能,在键盘出现时同时移动编辑区域来解决遮蔽的问题。
本文已收录于以下专栏:
相关文章推荐
1.自定义一个TextField继承自UITextField:
.h文件import import “AMPTextField.h”@implementation AMPTextFiel...
IOS7 点击空白处隐藏键盘的几种方法
IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好...
    //1, 关闭键盘
    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
iOS中收起键盘的方法和时机
1.用户输入完以后点击return收起键盘
可以点击return收起键盘并不意味着弹出来的键盘一定都有return这个按键,比如数字键盘类型就没有,UIKeyb...
键盘收起在UI开发中还是比较重要的, 适时收起键盘可以增强用户体验
在使用UITextField的时候,我们会和键盘打交道,有时候要求弹出来的键盘类型是数字键盘,有时候要求我们弹出来的是一般的键盘。当我们输入完成的时候,就涉及到在上什么时候收回键盘的事情了。收回键盘分...
ios开发QQ群:
在 iOS 程序中当想要在文本框中输入数据,轻触文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键...
1、点击编辑区以外的地方(UIView)
2、点击编辑区域以外的地方(UIControl)
3、使用制作收起键盘的按钮
4、使用判断输入字元
5、关于键盘遮蔽的...
使用虚拟键盘来输入资讯,是 iOS 的重要互动方式之一,虚拟键盘通常会自动出现在可以编辑的 UITextField 或是 UITextView 的编辑事件中,叫出键盘固然容易,但是要把它收起来,可就没...
IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏,...
他的最新文章
讲师:AI100
讲师:谢梁
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)iphone4键盘解锁方法哪位知道?
输入手机号码,报价结果将发送到您手机
装修顾问-馨馨
4年行业经验,24h可咨询
10秒闪电通过好友
报价短信已发送到您的手机
因材料品牌及工程量不同,具体报价以量房实测为准
稍候装修管家将回电您,免费提供装修咨询服务
您的装修预算约
*装修管家将回电您,免费提供装修咨询服务
*装修管家将回电您,免费提供装修咨询服务
*因材料品牌及工程量不同,具体报价以量房实测为准
装修顾问 -馨馨
(四年装修行业经验)
微信扫一扫
3.&您家小区名称 :&&
请选择您家的装修时间
iphone4键盘解锁方法哪位知道?
提问者:路飞沉|
浏览次数:82|
时间: 11:08:44
我来帮他解答
还可以输入1500字
已有3条回答
回答数:14208
被采纳数:12
步骤如下:
1、先请按电源键开机,当屏幕会出现苹果标志,不要松开电源键。
2、紧接着再按住主屏 Home 键不松手,直到屏幕黑屏。
3、当看到屏幕黑屏时,请松开电源键,继续按住主屏 Home 键,直到电脑端的 iTunes 出现检测到一个处于恢复模式的 iPhone。
4、随后点击 iTunes 窗口里的“恢复 iPhone”按钮。
5、接着 iTunes 会连接苹果的更新服务器,检测当前最新的 iOS 手机系统,并提示是否要删除手机上的所有数据并恢复,点击“恢复并更新”按钮继续。
6、随后 iTunes 会自动从苹果的更新服务器上下载恢复所需要的 iOS 系统,当下载完成以后会自动恢复到 iPhone 手机上。
7、最后当恢复成功以后,重新激活 iPhone手机,就相当于恢复了系统的出厂设置,可以重新为手机设置开机密码了。希望对你有帮助
回答数:14582
被采纳数:8
iphone4被屏幕密码锁定后只能通过刷机解锁,解锁步骤:
1、iphone关机状态,使用数据线连接电脑,打开电脑的iTunes软件。
2、按住Power键2秒。
3、在不放开Power键的状态下,按Home
键10秒,强制关机。
4、不放开Home键,轻按Power键1次。保持不放开Home键15秒左右,手机屏显示连接Itunes
图标信息,进入DFU模式。
5、电脑有声音和文字信息提示发现新硬件,并且iTunes提示有需要恢复的iphone。点击恢复,itunes自动下载最新的固件进行更新刷机。
回答数:32997
被采纳数:32
1、按下iphone主屏幕上的“cydia”
图标按钮启动cydia程序。
(如果启动cydia时,出现reorganizing提示,则请耐心等待,直到文件迁移完成,在此过程中请勿操作你的iphone,否则可能或造成程序丢失情况,迁移文件一般在5分钟左右完成)
2、选择“manage”按钮,进入管理选项卡。
3、选择“sources”按钮进入cydia源管理界面。
4、如果ultrasn0w源地址已经在源列表里则跳到第九步,否则按照下面的操作添加ultrasn0w源地址,点击右上角的“edit”按钮。
5、按下“add”按钮。
6、在弹出的输入框中输入ultrasn0w源地址(其中ultrasn0w中的0是数字0而不是字母0
),并按下“add
source”按钮。
7、源添加成功后,点击“return
cydia”返回。
8、按下“done”按钮完成添加。
9、按下ultrasn0w源地址,进入源软件列表。
10、选择“ulteasn0w”补丁。
11、按下右上角的“install”按钮,安装ultrasn0w。
12、按下“confirm”按钮继续。
13、下载并安装成功后,点击“restart
springboard”注销下你的iphone即完成ultrasn0w解锁补丁的安装鍗氬?鍒嗙被锛

我要回帖

更多关于 ios 键盘 return done 的文章

 

随机推荐