这样做的一种方法是在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中的所有现有实例。
你的意思是自动文本?您可以通过键盘禁用自动建议 –
听写与自动文本不同。自动文本在您输入时会显示单词,听写允许用户说出他们的电话/ ipad并将他们的声音转换为文本 –
如果您不想显示定量按钮,可以将键盘类型更改为UIKeyboardTypeEmailAddress; –