我如何知道用户何时从Alphabet更改为Numeric iOS

时间:2014-09-29 06:47:09

标签: ios iphone keyboard

我想基本知道这家伙的问题是什么how to detect when the iOS default keyboard type switches from text to numbers

我想知道如何知道用户何时从默认键盘的字母表面切换到数字面。

我想要的原因是,当用户从一个文本字段更改为下一个文本字段时,我想保留数字方面,如果他们写的最后一件事是数字。

我无法使用numbersAndPunctuation键盘类型作为一个整体,因为它无法更改为表情符号,我仍然需要这样做。 但是,如果我知道他们何时切换,我将能够从NumbersAndPunctuation开始,然后当用户切换时我可以将键盘类型更改为默认值,因此用户可以切换到表情符号。

在数字方面启动默认键盘的能力或能力。如果可能的话,这也是一个解决方案。

任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:2)

这是我对"检测"的贡献。 keyboardType。从本质上讲,没有API可以获得你想要的东西。 https://stackoverflow.com/a/26095686/2719509

如何使用当前API获得所需的功能。

  1. 用户在[原始] textField中键入文本,更改 键盘,想要转到下一个键盘
  2. 创建[新]文本字段,用文本填充用户 输入后,将其置于文本字段的完全相同位置 用户在哪里工作
  3. 将[original] textField移动到该位置 [next] textField,删除输入的文本并将其替换为 [next] textField的文本。使[next] textField.hidden = YES 直到用户转到[next next] textField。
  4. 重复2& 3。
  5. 在移动textFields时不要使用动画。

    诀窍是:保持键盘的状态保持textField不变并让用户相信他正在不同的textFields中写作。

    希望它有所帮助。

答案 1 :(得分:0)

在文本字段委托中添加if (textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation)

答案 2 :(得分:0)

试试这个,它会帮助你检测最后一个字符,使用它可以识别键盘类型。 (目前打开哪种类型的键盘?)

- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters{        
    if([characters rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location == NSNotFound){
        NSLog(@"decimalDigitCharacterSet");
    }else if([characters rangeOfCharacterFromSet:[[NSCharacterSet letterCharacterSet] invertedSet]].location == NSNotFound){
        NSLog(@"letterCharacterSet");
    }
    return YES;
}

它为我工作..希望这会对你有帮助。