2015-10-02 39 views
0

我有一个iPad应用程序,它在整个过程中使用了数千个UITextFieldsUITextViews。当文本输入这些元素时,使用iOS默认keyboard。但是,因为我的应用不支持dictation,所以只要用户尝试口述,它就会崩溃。对该主题的一些研究表明,在默认keyboard上禁用dictation功能是不可能的。如何在整个iOS应用程序中设置默认键盘?

取而代之,我发现建议使用将类型keyboard更改为不提供dictation选项的类型。问题是我的应用程序中有成千上万的UITextFieldsUITextViews,所以手动进入并更改其中每个键盘的类型都是不可行的。我的问题是:有没有办法改变应用程序中使用的默认keyboard

+0

你的意思是自动文本?您可以通过键盘禁用自动建议 –

+0

听写与自动文本不同。自动文本在您输入时会显示单词,听写允许用户说出他们的电话/ ipad并将他们的声音转换为文本 –

+0

如果您不想显示定量按钮,可以将键盘类型更改为UIKeyboardTypeEmailAddress; –

回答

0

这样做的一种方法是在init中使用一个类别并设置该值。这需要搅拌,但应该是安全的。

请记住,这将做你正在请求的,所以所有UITextFields现在将使用定义的键盘类型呈现(即使你没有自己实例化文本字段)。

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

#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中的所有现有实例。

相关问题