検索

ホームページ  >  に質問  >  本文

uitextfield - IOS textField怎样设置只能输入英文字母或者数字,不能输入汉字

RT,要弄个输入车牌后5位字符的输入框,车牌后5位只能有数字和字母,我在网上找了很多方法,都有些问题,要么就全都能输入,要么就只能输入数字,要么就到输入到5位后无法修改输入的东西,所以向大家求助,有没有什么方法可以限定输入框不能输入中文的
我现在用的这个方法
//设置键盘类型
self.textField.keyboardType = UIKeyboardTypeASCIICapable;

define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

//判断是否是数字,不是的话就输入失败
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *cs;

cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];



NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串



BOOL canChange = [string isEqualToString:filtered];



return self.textField.text.length>=5?NO: canChange;

}
这个方法输入满5位后就无法删除修改了求教

大家讲道理大家讲道理2839日前767

全員に返信(3)返信します

  • ringa_lee

    ringa_lee2017-04-17 14:33:10

    既存のコンテンツと入力するコンテンツの合計が >=5 であるかどうかを判断する必要があります
    次のコードを追加すると、実行できるようになります
    NSUInteger newLength = textField.text.length string .length-range.length;
    return newLength>=5?NO : canChange;

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:33:10

    マクロを使用して、次のような入力文字セット文字列を定義できます。

    リーリー

    次に、入力された文字が関連するデリゲートの文字列内で見つかるかどうかを判断します。見つからず、受け入れられませんでした。

    返事
    0
  • 迷茫

    迷茫2017-04-17 14:33:10

    5 桁を入力した後に変更または削除できないのは、独自のコードの問題です。 5以上の場合は改変が許可されないので当然動作しません。確認する必要があるのは、置き換えが仕様に適合しているかどうか、および変更した結果が仕様に適合しているかどうかです。削除する場合、置換文字は空になります。

    リーリー

    返事
    0
  • キャンセル返事