0
我需要一個UIKeyboard來顯示默認UIKeyboardType而不是編號0-9。我只需要隱藏這些按鈕。UIKeyboard不帶編號
有沒有辦法訪問鍵盤的不同按鈕,所以我可以設置然後隱藏? 如果否,我可以檢測何時按下「。?123」按鈕並添加子視圖以覆蓋第一行? 或者任何指向更好方法的指針?
我需要一個UIKeyboard來顯示默認UIKeyboardType而不是編號0-9。我只需要隱藏這些按鈕。UIKeyboard不帶編號
有沒有辦法訪問鍵盤的不同按鈕,所以我可以設置然後隱藏? 如果否,我可以檢測何時按下「。?123」按鈕並添加子視圖以覆蓋第一行? 或者任何指向更好方法的指針?
沒有禁用訪問數字和標點鍵的公共API。您可以深入瞭解鍵盤的視圖層次結構,試圖隱藏數字切換鍵,但未來可能會中斷(鍵盤視圖層次結構在過去發生了變化)。
只要在文本控件的委託中過濾掉不喜歡的字符就簡單多了。例如,假設您只想讓用戶鍵入字母。如果你有一個UITextField
,其委託設爲您的視圖控制器,並在您的視圖控制器實現此方法:如果你有一個UITextView
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSRange all = NSMakeRange(0, string.length);
if (all.length == 0) {
// deletion
return YES;
}
NSRange letters = [string rangeOfCharactersFromSet:[NSCharacterSet letterCharacterSet]];
return NSEqualRanges(all, letters);
}
,該方法被調用textView:shouldChangeTextInRange:replacementText:
。
感謝您的快速回復。 我想出這個: 'NSRange字母= [字符串rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@ 「abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQURTUVWXYZ,:;() -/+ $&@?!」]];' 唯一的問題是退格被忽略。 –
我已更新我的答案以允許刪除。你的字符集不會讓其他語言的用戶感到高興。我希望你能和你在一起。 –
想出了一個方便的解決方案,謝謝你: 'if(all.length == 0){ //刪除 return YES; } NSMutableCharacterSet * charset = [NSCharacterSet letterCharacterSet]; [charset addCharactersInString:@「。,:;() -/+ $&@ ?!」]; NSRange letters = [string rangeOfCharacterFromSet:charset]; return NSEqualRanges(all,letters);' –