這樣做的一種方法是在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; –