默認情況下,當點擊UITextField
時,iOS將顯示默認鍵盤。有沒有可能繞過這個?我希望在textField上點擊模態顯示自定義視圖控制器,並能夠通過此控制器編輯textField。顯示用於編輯UITextField的模態自定義鍵盤視圖控制器
有沒有推薦的方法?
默認情況下,當點擊UITextField
時,iOS將顯示默認鍵盤。有沒有可能繞過這個?我希望在textField上點擊模態顯示自定義視圖控制器,並能夠通過此控制器編輯textField。顯示用於編輯UITextField的模態自定義鍵盤視圖控制器
有沒有推薦的方法?
好的嘗試了,你問的具體要求: -
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];
POCModalViewController *objPOCModalViewController = [[POCModalViewController alloc]init];
[self presentViewController:objPOCModalViewController animated:YES completion:nil];
return NO;
}
哪裏POCModalViewController
是你想呈現控制器。
有可能關閉鍵盤並讓textField成爲第一個響應奧德? – tiguero
鍵盤根本不會顯示! 你想顯示鍵盤嗎? – footyapps27
我不想顯示默認的鍵盤;我想觸發我的模態視圖控制器的顯示,而不是保留textField作爲響應者鏈中的第一響應者 – tiguero
當用戶單擊UItextField時,以下wil將重新輸入鍵盤作爲輸入視圖。
self.TextField.inputView = "your view ";
這不是我的想法:我想在開始編輯文本字段時觸發一個模態視圖控制器 – tiguero
我想後的解決方案,我終於實現,這是最接近Footyapps27解決方案:
我已經提出,將呈現模態控制器,控制器(它將包含內部多個自定義鍵盤視圖)作爲我的控制器視圖中包含的任何UITextField對象的uitextfield
委託。
我現在可以接收通過- (BOOL)textFieldShouldBeginEditing:(TWValueInput *)textField
方法的任何通知時,文本框開始進行編輯:
在該委託方法我有下面的代碼片斷:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
MyCustomKeyboardVC* vc = [[UIStoryboard storyboardWithName:@"main" bundle:nil] instantiateViewControllerWithIdentifier:@"customKeyboardController"];
vc.delegate = self;
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
return NO;
}
返回NO在該方法內將阻止顯示默認鍵盤。實際上並不需要在文本框中調用resignFirstResponder
。
我應該指出,蘋果公司推薦的顯示自定義鍵盤的方法是提供一個自定義視圖,以提供像Divya提到的文本字段inputView
屬性。由於我想管理多個鍵盤視圖條目,因此通過上面提到的委託方法顯示自定義鍵盤控制器會更快。
查看UITextFieldDelegate ..我認爲當字段被點擊時,「textFieldShouldBeginEditing」被調用...然後您可以立即調用'[textField resignFirstResponder]'(使用選項禁用動畫,以便它不會向上滑動然後顯示你的自定義鍵盤UIView(添加子視圖)...或者用UIViewController進行模態操作(如果你需要的話)?不要忘記將添加到你的.h後的textField.delegate = self ! –
@AlbertRenshaw我將探索這條道路。謝謝 – tiguero
@tiguero:它的運氣還沒有呢? – footyapps27