首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在整个iOS应用程序中设置默认键盘?

如何在整个iOS应用程序中设置默认键盘?
EN

Stack Overflow用户
提问于 2015-10-03 02:06:55
回答 1查看 46关注 0票数 0

我有一个iPad应用,在整个过程中使用了成千上万的UITextFieldsUITextViews。在这些元素中输入文本时,将使用iOS默认keyboard。但是,因为我的应用程序不提供dictation支持,所以每当用户尝试口述时,它就会崩溃。对这个主题的一些研究表明,在默认keyboard上禁用dictation功能是不可能的。

相反,我发现建议将keyboard的类型改为不提供dictation选项的类型。问题是,我的应用程序中有数以千计的UITextFieldsUITextViews,所以手动进入并更改它们的键盘类型是不可行的。我的问题是:有没有办法更改应用程序中使用的默认keyboard

EN

回答 1

Stack Overflow用户

发布于 2015-10-03 05:57:08

要做到这一点,一种方法是使用一个类别,并在初始化期间设置值。这需要大量使用,但应该是安全的。

请记住,这将完成您所请求的操作,因此所有UITextFields现在都将使用定义的键盘类型呈现(即使您没有自己实例化文本字段)。

此类别将默认所有UITextFields以显示数字键盘。

代码语言:javascript
复制
#import "UITextField+KeyboardType.h"
#import <objc/runtime.h>

@implementation UITextField (KeyboardType)

+(void)initialize {

    Method originalMethod = class_getInstanceMethod([self class], @selector(init));
    Method swizzledMethod = class_getInstanceMethod([self class], @selector(init_swizzled));
    method_exchangeImplementations(originalMethod, swizzledMethod);
}

- (instancetype)init_swizzled {
    self = [self init_swizzled];
    if (self) {
        self.keyboardType = UIKeyboardTypeNumberPad;
    }
    return self;
}

@end

我建议您改为创建UITextField/UITextView的子类,并用它们的新子类替换UITextField/UITextView的所有现有实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32913225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档