代码之家  ›  专栏  ›  技术社区  ›  gargantuan

我可以限制UITextField的字符集吗?

  •  1
  • gargantuan  · 技术社区  · 15 年前

    4 回复  |  直到 15 年前
        1
  •  5
  •   Ryan_IRL    15 年前

    您可以尝试使用以下UITextFieldDelegate方法:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
    
        2
  •  9
  •   PfhorSlayer    15 年前

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        // Only characters in the NSCharacterSet you choose will insertable.
        NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefgABCDEFG"] invertedSet];
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
        return [string isEqualToString:filtered];
    }
    
        3
  •  1
  •   DShah    13 年前

    尝试使用 UIKeyboardTypeNamePhonePad UITextField . 上面只有字母和数字:

    textField.keyboardType = UIKeyboardTypeNamePhonePad;
    
        4
  •  0
  •   Vishal Kumar    14 年前

    使用Interface builder,您可以链接并获取任何函数中“编辑已更改”的事件。现在你可以检查长度了

    - (IBAction)onValueChange:(id)sender 
    {
        NSString *text = nil;
        int MAX_LENGTH = 20;
        switch ([sender tag] ) 
        {
            case 1: 
            {
                text = myEditField.text;
                if (MAX_LENGTH < [text length]) {
                    myEditField.text = [text substringToIndex:MAX_LENGTH];
                }
            }
                break;
            default:
                break;
        }
    
    }