iOS通过代码将默认键盘从ABC模式切换到123模式?

我可以通过以下方式了解如何设置键盘的整体类型:

self.myTextView.keyboardType = UIKeyboardTypeDefault; 

如何将默认键盘的模式从ABC切换到123并通过代码再次返回? 基本上用户点击@字符的时刻(@符号在123模式下可用)我想将键盘切换回ABC模式。

有任何想法吗?

在此处输入图像描述在此处输入图像描述

您可以通过使用UITextViewDelegate来实现此目的。 它允许您在UITextView中按下它们时拦截它们。 这将允许您在用户按某个键时切换键盘。 为了恢复到UIKeyboardTypeDefault键盘的默认状态,您需要将键盘类型更改为另一个,然后再返回默认值。

在ViewController.h文件中,使其实现UITextViewDelegate协议:

 @interface ViewController : UIViewController  

在ViewController.m中的ViewController的viewDidLoad方法中,将textField的委托设置为视图控制器:

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.myTextView.delegate = self; } 

最后,我们需要在输入密钥时捕获密钥并适当地更改键盘。 我们在shouldChangeCharactersInRange:方法中执行此操作。

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if( [@"@" isEqualToString:text] ) { NSLog( @"Toggling keyboard type"); textView.inputView = nil; [textView resignFirstResponder]; [textView setKeyboardType:UIKeyboardTypeEmailAddress]; [textView becomeFirstResponder]; [textView reloadInputViews]; textView.inputView = nil; [textView resignFirstResponder]; [textView setKeyboardType:UIKeyboardTypeDefault]; [textView becomeFirstResponder]; [textView reloadInputViews]; } return YES; } 

所以我最初感到困惑,并认为你真的想改变键盘类型。 现在我正在阅读你的评论,我意识到你实际上想要将键盘重置为显示字母的默认状态,而不是数字和特殊字符。 上面的代码就是这样做的。