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

时间:2014-08-05 23:43:39

标签: ios keyboard uitextviewdelegate

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

self.myTextView.keyboardType = UIKeyboardTypeDefault;

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

有什么想法吗?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:4)

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

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

@interface ViewController : UIViewController <UITextViewDelegate>

在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;
}

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