iOS自定义键盘和系统键盘切换且文本输入框一直获得焦点

UITextView用来进行文本输入。
方法becomeFirstResponder和resignFirstResponder可以用来进行弹出系统键盘和收下系统键盘。

弹出系统键盘,文本输入框获得焦点。收下系统键盘,文本输入框失去焦点。那么,问题来了。

某个条件下,如点击界面上的某个按钮,展示自定义键盘。再次点击,切换到系统键盘。
先收下系统键盘,再展示自定义键盘。比如移动自定义键盘View的Frame.Y。但这时因为收下系统键盘,本文输入框失去焦点。
虽然展示了自定义键盘。但用户体验很不好。光标没有闪动。自定义键盘输入的内容无法准确插入到文本输入框里。

解决方法:(见iOS开发文档)

@property(readwrite, retain) UIView *inputView

If the value in this property is nil, the text view displays the standard system keyboard when it becomes first responder. Assigning a custom view to this property causes that view to be presented instead.

The default value of this property is nil.

这个属性就是说
1.为nil时展示系统键盘。
2.为自定义View时展示自定义键盘。

注意要刷新。

- (void)reloadInputViews

You can use this method to refresh the custom input view or input accessory view associated with the current object when it is the first responder. The views are replaced immediately—that is, without animating them into place. If the current object is not the first responder, this method has no effect.

完美解决问题。
文本输入框一直获得焦点。自定义键盘和系统键盘自由切换。

时间: 2024-10-03 22:54:25

iOS自定义键盘和系统键盘切换且文本输入框一直获得焦点的相关文章

UITextView自定义键盘和系统键盘

UITextView有inputView 和 inputAccessoryView 两个属性,都指定了相应的视图, inputAccessoryView 对象显示在 inputView 对象的上面.与输入相关的还有一个 reloadInputViews 方法用来重新载入输入视图.如图: 代码: if (bt.selected == YES) { bt.selected = NO; [m_textView setInputView:nil]; [m_textView becomeFirstResp

iOS开发随笔 29:xcode7下模拟器输入文本无法显示系统键盘的解决办法

xcode7下的ios模拟器输入内容无法系统键盘,只能用电脑键盘输入内容,这样可能会对调试带来麻烦. 其实xcode7下的ios模拟器默认只能使用一种,要么是模拟器系统键盘,要么就是是电脑键盘.设置方法如下: 打开ios模拟器菜单栏:Hardware-->Keyboard,会分别看到三个选项:Uses the Same Layout as OS X .Connect Hardware Keyboard和Toggle Software Keyboard.Uses the Same Layout a

关于xcode7下的ios模拟器输入内容无法显示系统键盘的解决办法

xcode7下的ios模拟器输入内容无法系统键盘,只能用电脑键盘输入内容,这样可能会对调试带来麻烦. 其实xcode7下的ios模拟器默认只能使用一种,要么是模拟器系统键盘,要么就是是电脑键盘.设置方法如下: 打开ios模拟器菜单栏:Hardware-->Keyboard,会分别看到三个选项:Uses the Same Layout as OS X .Connect Hardware Keyboard和Toggle Software Keyboard.Uses the Same Layout a

iOS自定义数字键盘

自定义键盘实际就是设置UITextField的inputView属性,首先我们要做的是自定义一个UIView,实现键盘的样式. 自定义View代码如下: 1 #import <UIKit/UIKit.h> 2 //创建自定义键盘协议 3 @protocol My_KeyBoardDelegate <NSObject> 4 //创建协议方法 5 @required//必须执行的方法 6 - (void)numberKeyBoard:(NSInteger) number; 7 - (v

iOS - 点击背景视图收起系统键盘

我们在 IOS 开发中经常会需要在输入框输入数据后,需要收起系统键盘,比如由于手机屏幕不是很大,可能由于输入信息后,系统键盘就会遮挡住下一步的按钮,而系统键盘有没有收起键,所以我们可以实现点击背景视图收起键盘 具体方法如下,只需要在对应的 ViewController 里面重写下面这个方法就可以了 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [super touchesBegan:t

iOS开发日记15-强制弹出系统键盘(禁用搜狗键盘)

今天博主有一个强制弹出系统键盘的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 起因是在使用搜狗的过程中,使用中文字符标点产生了bug,应该是搜狗的问题.追询一番无果后,决定禁用搜狗键盘,使用系统自带的键盘. 尝试了很多方法,通知,KVO等等,最后找到了一个系统的API,十分的简便,分享给大家. 在AppDelegate中添加如下代码,即可. //强制使用系统键盘 - (BOOL)application:(UIApplication *)application shouldAllow

ios 自定义键盘的return键以及键盘的其他一些属性

//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderStyleLine, UITextBord

IOS: iPhone键盘通知与键盘定制

一.键盘通知 当文本View(如UITextField,UITextView,UIWebView内的输入框)进入编辑模式成为first responder时,系统会自动显示键盘.成为firstresponder可能由用户点击触发,也可向文本View发送becomeFirstResponder消息触发.当文本视图退出first responder时,键盘会消失.文本View退出first responder可能由用户点击键盘上的Done或Return键结束输入触发,也可向文本View发送resig

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro