2015-10-02 69 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中的所有現有實例。

相關問題