当前位置: 首页 > 编程笔记 >

iOS开发之UIKeyboardTypeNumberPad数字键盘自定义按键

海典
2023-03-14
本文向大家介绍iOS开发之UIKeyboardTypeNumberPad数字键盘自定义按键,包括了iOS开发之UIKeyboardTypeNumberPad数字键盘自定义按键的使用技巧和注意事项,需要的朋友参考一下

最近做一个搜索用户的功能,这里使用了UISearchBar。由于搜索的方式只有手机号码,所以这里的键盘要限制为数字输入,可以这么做:

self.searchBar.keyboardType = UIKeyboardTypeNumberPad;如果使用的不是搜索框而是textField输入框,可以设置textField的键盘属性来展示 self.textField.keyboardType = UIKeyboardTypeNumberPad;监听事件如下所示即可。

但是这里有个问题,就是数字键盘上面没有“搜索”按钮,这样子用户在输入完手机号码后无法搜索。所以这个时候我们需要自己添加一个自定义的搜索按钮,然后加到键盘上面。

解决思路如下所示:

1.自定义搜索button

2.监听键盘出现的事件

3.遍历搜索的Windows窗体,找到键盘的窗体,然后遍历其子视图,找到我们真正需要的键盘视图

4.把我们自定义的按钮加到上面找到的视图里

这里要注意的一点,随着iOS SDK的不断发展,keyboard的视图名称也不断在更新变化,当你调试以下代码无法得到期待的效果时,请重新遍历一次窗台,然后慢慢调试,找到真正需要的视图名称。

解决代码

1.自定义搜索按钮

// 搜索按钮
_searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
_searchButton.frame = CGRectMake(0, 163, 106, 53);
[_searchButton setTitle:@"搜索" forState:UIControlStateNormal];
[_searchButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_searchButton addTarget:self action:@selector(SearchButtonDidTouch:) forControlEvents:UIControlEventTouchUpInside]; 

2.监听键盘出现的事件

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShowOnDelay:) name:UIKeyboardWillShowNotification object:nil];
- (void)keyboardWillShowOnDelay:(NSNotification *)notification {
[self performSelector:@selector(keyboardWillShow:) withObject:nil afterDelay:0];
}

这里面监听通知后的执行函数并非立马执行查找窗体的函数,是因为在iOS4后,键盘添加到窗体的事件放到了下一个EventLoop,所以我们采用了延迟的方法。

3. 遍历视图,并添加按钮

- (void)keyboardWillShow:(NSNotification *)notification {
UIView *foundKeyboard = nil;
UIWindow *keyboardWindow = nil;
for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
if (![[testWindow class] isEqual:[UIWindow class]]) {
keyboardWindow = testWindow;
break;
}
}
if (!keyboardWindow) return;
for (__strong UIView *possibleKeyboard in [keyboardWindow subviews]) {
if ([[possibleKeyboard description] hasPrefix:@"<UIInputSetContainerView"]) {
for (__strong UIView *possibleKeyboard_2 in possibleKeyboard.subviews) {
if ([possibleKeyboard_2.description hasPrefix:@"<UIInputSetHostView"]) {
foundKeyboard = possibleKeyboard_2;
}
}
}
}
if (foundKeyboard) {
if ([[foundKeyboard subviews] indexOfObject:_searchButton] == NSNotFound) {
[foundKeyboard addSubview:_searchButton];
} else {
[foundKeyboard bringSubviewToFront:_searchButton];
}
}
}

以上所述是小编给大家介绍的iOS开发之UIKeyboardTypeNumberPad数字键盘自定义按键,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 在系统数字键盘的左下角添加自定义按钮。在ios7之前可以通过监听UIKeyboardDidShowNotification,然后把自定义按钮贴在键盘上,会跟键盘一起弹出。但是这种实现方法在 iOS7 的效果则变成:键盘弹出,接着突然加上按钮,无法达到原先的效果。这份代码中,开发者实现了一个高仿系统自定义的数字键盘,左下角的ABC键可切换回系统键盘。

  • 问题内容: 是否有任何已知的组合上,将给予一个民垫键盘有特殊字符如,,和。我试图允许用户输入一个数字,并且该字段也可以采用上述字符。我尝试了很多,但似乎都没有提供所需的输出。 为此,我需要创建自己的自定义键盘吗?由于我的要求非常特定于某些特殊字符,请不要将此问题标记为重复的问题。提前致谢。 问题答案: 您可以根据需要使用KeyboardView进行自定义。 其中 R.xml.customLayou

  • 本文向大家介绍iOS 开发之 - 关闭键盘 退出键盘 的5种方式,包括了iOS 开发之 - 关闭键盘 退出键盘 的5种方式的使用技巧和注意事项,需要的朋友参考一下 iOS 开发之 - 关闭键盘 退出键盘 的5种方式  1、点击编辑区以外的地方(UIView) 2、点击编辑区域以外的地方(UIControl) 3、使用制作收起键盘的按钮 4、使用判断输入字元 5、关于键盘遮蔽的问题 1,点击编辑区以

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 此为结合了uView的MessageInput 验证码输入及Keyboard 键盘组件的模板, 模仿支付的场景,用户可以根据思路,修改出自己想要的效果。

  • 获取系统emoji表情,实现表情键盘,输入框能够随着输入文字的长度而自动增长,模仿微信键盘,能够切换文字键盘和表情键盘。 [Code4App.com]

  • 模拟ios5的拨号键盘,带有拨号键,可以调用系统的电话功能进行打电话。只有在真机中才能测试打电话功能。 作者说:修改delegate后,可以自定义电话。 [Code4App.com]