【ios開發(fā)】強(qiáng)制開啟系統(tǒng)鍵盤且設(shè)置字母連續(xù)大寫

對(duì)于UITextField控件, 常規(guī)的屬性用法大家都很熟悉, 但依然有一些不常用的“遺珠”屬性,今天來撿撿漏。

需求:

只輸入字母和數(shù)字, 且字母需要全部大寫

相信一部分同學(xué)會(huì)覺得不好處理, 是否需要監(jiān)聽UITextFieldTextDidChangeNotification,然后判斷輸入的字符進(jìn)行替換操作, 第三方搜狗鍵盤很多屏蔽操作無效,要怎么強(qiáng)制屏蔽等等問題。 。 不著急, 一步步處理。

  • 強(qiáng)制開啟系統(tǒng)鍵盤

首先,設(shè)置鍵盤類型,textField.keyboardType = UIKeyboardTypeASCIICapable

其次,設(shè)置代理, 設(shè)置textField.secureTextEntry = YES;

實(shí)現(xiàn)代理方法:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.secureTextEntry = NO;
}

當(dāng)我們?cè)O(shè)置了textField為密碼模式時(shí),系統(tǒng)會(huì)自動(dòng)屏蔽掉第三方鍵盤, 包括搜狗, 這樣就不需要我們?nèi)ヮ~外判斷鍵盤類型和模式了, 但此時(shí)我們的需求需要輸入的內(nèi)容明文顯示, 那么在代理方法textFieldDidBeginEditing內(nèi), 再改回明文模式即可。

  • 字母連續(xù)大寫

首先,設(shè)置自動(dòng)大寫類型:textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

其次, 設(shè)置開啟自動(dòng)校正:textField.autocorrectionType = UITextAutocorrectionTypeYes;

系統(tǒng)有兩個(gè)枚舉屬型:UITextAutocapitalizationTypeUITextAutocorrectionType

typedef NS_ENUM(NSInteger, UITextAutocapitalizationType) {
    UITextAutocapitalizationTypeNone,             // 不自動(dòng)大寫
    UITextAutocapitalizationTypeWords,            // 單詞首字母大寫
    UITextAutocapitalizationTypeSentences,        // 句子首字母大寫
    UITextAutocapitalizationTypeAllCharacters,    // 所有祖母大寫
};
typedef NS_ENUM(NSInteger, UITextAutocorrectionType) {
    UITextAutocorrectionTypeDefault,      // 默認(rèn)
    UITextAutocorrectionTypeNo,           // 自動(dòng)校正
    UITextAutocorrectionTypeYes,          // 不自動(dòng)校正
};

根據(jù)這兩個(gè)屬性值, 搭配代理,就可方便的設(shè)置輸入內(nèi)容為字母且連續(xù)大寫了:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    textField.secureTextEntry = NO;
    textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
   textField.autocorrectionType = UITextAutocorrectionTypeYes;
}

以上, 完結(jié)。


經(jīng)過測(cè)試新一輪檢測(cè), 發(fā)現(xiàn)這種處理方式有時(shí)候還是無法完全實(shí)現(xiàn)強(qiáng)制屏蔽第三方鍵盤, 那可看情況使用下面的代碼:

  • 全局屏蔽第三方鍵盤

AppDelegate.m中實(shí)現(xiàn)下面這個(gè)方法

- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier{
    if ([extensionPointIdentifier isEqualToString:@"com.apple.keyboard-service"]) {
        return NO;
    }
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容