原文
我相信是懒人推动了世界的发展,既然iphone有了自己的软件盘,我们什么还要自己实现其功能呢。
so,只要寄生在上面就行了。
通过这篇文章给的灵感:
为UIKeyboardTypeNumberPad增加自定义按键
http://www.codeios.com/thread-805-1-1.html
思路:
1.用静态方法找到应用程序当前view(window)中的UIKeyboard的view
2.在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)
3.根据需要调整系统键盘的大小以满足你想要的尺寸
4.给自己的键盘view上的button添加方法,实现功能
主要代码:
添加自身类为键盘事件的观察者:
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(keyboardWillShow:)
- name:UIKeyboardWillShowNotification
- object:nil];
复制代码
核心思路代码:
- - (void)keyboardWillShow:(NSNotification *)note
- {
- UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//知识点
- for(int i=0; i<[tempWindow.subviews count]; i++)
- {
- keyboard = [tempWindow.subviews objectAtIndex:i];
- if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
- {
- [keyboard setFrame:CGRectMake(0, 460, 320, 345)];
- [self congfigKeypad];
-
- [keyboard addSubview:keyPadView1];
-
- }
- }
- }
复制代码
比如配置方法可以是这样:
- -(void)congfigKeypad
- {
- SearBtn *one = [[SearBtn alloc] initWithFrame:CGRectMake(81, 3, kNumPadW, kNumPadH) index:1 ContextString:@"1" type:kNumPadType];
- [one setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
- [one addTarget:self action:@selector(buttonClickAtIndex:) forControlEvents:UIControlEventTouchUpInside];
- //......略
- }
复制代码
添加NSMutalbeString作为文本域字串的容器,点击button后append的button对应的字串。
- - (void)buttonClickAtIndex:(id)sender
- {
- SearBtn *btnItem = (SearBtn*)sender;
- NSString *str = btnItem->btnText;
- [s_text appendString:str];
- [sBar setText:s_text];
- }
复制代码
再实现一个deleteChar的方法作为退格键思路:
- if ([s_text length] > 0)
- {
- NSRange rang;
- rang.location = [s_text length] - 1;
- rang.length = 1;
- [s_text deleteCharactersInRange:rang];
- }
复制代码
现在点击各种文本域,应该就可以现实自己的键盘了。继续优化用textfield的代理方法控制键盘的字串类型,长度,和响应消失:
分享到:
相关推荐
标题"\"c# winform完美软键盘实现 软键盘 源码\"\"揭示了这是一个关于用C#编程语言在WinForms环境中开发软键盘的应用程序,而且这个软键盘在功能和用户体验上具有较高的完善度,解决了以往可能遇到的问题。...
之前上传的另外一个自定义键盘,并没有实现键盘弹出的时候,布局向上自动调整。(网络上所有的自定义键盘都没有添加自适应的功能,而且布局没这么好看,上一个例子资源链接为:...
在Android应用开发中,经常会遇到一个问题,即当用户在输入框中输入时,弹出的软键盘会遮挡部分屏幕内容,尤其是对于登录或注册等需要填写多项信息的界面,这种情况严重影响了用户体验。为了解决这个问题,Android...
在C#中,软键盘的实现可能会涉及到以下知识点: 1. **Windows Forms** 或 **WPF**:C#的UI开发通常使用这两个框架之一,它们提供了创建图形用户界面(GUI)所需的各种控件,如按钮、文本框等,这些控件可以模拟键盘...
标题“软键盘和其他布局完美切换”指的是如何在用户激活输入框时,使软键盘的弹出与当前布局的适应性平滑过渡,避免因键盘的突然出现导致其他布局元素的位置混乱,从而提供更流畅、更舒适的用户体验。 描述中的...
QT自制软键盘, 最完美、最简单、跟自带虚拟键盘一样。 特点: 1.键盘界面保持在所有界面最上方。 2.点击键盘按钮不会改变底层文本输入框焦点。 3.通过模拟键盘点击事件完成键盘输入文本信息。 4.包含各种键盘...
这个压缩包"安卓键盘输入相关-软键盘和其他布局完美切换.rar"可能包含了一些示例代码或者解决方案,帮助开发者实现软键盘与布局之间的无缝切换。虽然无法逐一验证每个文件的具体功能,但我们可以探讨一下安卓开发...
这款软件的核心特点在于其创新的手写识别系统,不仅支持全屏书写,还能识别非标准的自定义字符,使得手迹签名得以完美保留。 手写识别技术是TH96的一大亮点。这项技术基于先进的图像处理和模式识别算法,能够精准地...
综上所述,`CResizeLayout.java`文件中的代码可能包含了处理Android软键盘弹出时动态调整UI布局的核心逻辑,通过监听键盘状态、自定义布局测量和更新、以及适配不同设备等方式,实现了IM聊天窗口的完美交互体验。...
在Android应用开发中,经常会遇到一个用户界面设计问题:当用户在EditText中输入内容时,软键盘自动弹出,导致屏幕下方的输入区域被遮挡,严重影响用户体验。为了解决这个问题,开发者可以采取多种策略来避免软键盘...
这意味着开发者需要创建一个自定义的InputMethodService,覆盖默认的软键盘,以显示特定的字符集。 2. **拼音映射**: - 为了方便用户输入,可以实现拼音到车牌字符的映射。例如,用户输入"jing"会自动转换为"京...
在Xamarin Android应用开发中,有时会遇到一个问题:当用户打开软键盘进行输入时,由于屏幕高度限制,软键盘可能会遮挡住部分应用界面,特别是那些位于屏幕底部的控件。这种情况给用户带来了不便,因为他们无法直接...
5. **使用CoordinatorLayout和Behavior**:在Android设计支持库中,CoordinatorLayout允许自定义Behavior,可以用来处理软键盘与布局交互的问题。 6. **自定义输入法样式**:在极少数情况下,可能需要修改输入法...
这部分的实现涉及Service(后台运行的服务)、XML文件解析(用于布局和样式定义)、自定义控件(满足特殊输入需求)以及GestureDetector(识别用户的滑动、点击等手势)等技术。 用户反馈功能则用于收集用户对...
在Android应用开发中,经常会遇到一个用户界面设计问题,即当软键盘弹出时,登录或其他表单页面的元素(如登录按钮)被键盘遮挡。为了提供良好的用户体验,我们需要解决这个问题,使得页面内容能够随键盘的弹出而...
- 表情键盘的切换逻辑,通过监听软键盘状态实现表情面板与文本输入的切换。 4. **消息发送与接收**: - `AsyncTask`或`Retrofit`实现网络通信,将消息发送至服务器。 - 接收消息时,使用`BroadcastReceiver`或`...
5. **搜索引擎设置**:用户可以自定义浏览器的默认搜索引擎,包括Google、Yahoo、Bing等选项,这与桌面版Chrome的设置保持一致。 6. **宽带管理功能**:为了节省流量,Chrome for Android允许用户选择仅在Wi-Fi环境...
3. 在MainActivity中,我们需要实现一个自定义的OnTouchListener。在这个监听器中,我们首先判断触摸点是否在EditText区域内,如果是,再检查EditText是否可以垂直滚动。如果可以滚动,我们就将事件交给EditText处理...