3

これは私のコードです:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
    NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"אבגדהוזחטיכלמנסעפצקרשתףץםן"] invertedSet];

    // max charcters
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    if (newLength > 14)
        return NO;

    // allow backspace
    if (range.length > 0 && [string length] == 0) {
        return YES;
    }
    // do not allow . at the beggining
    if (range.location == 0 && [string isEqualToString:@"."]) {
        return NO;
    }
    if ((range.location > 0) && (([[textField.text substringWithRange:NSMakeRange((range.location -1), 1)] isEqualToString:@"ף"]) || ([[textField.text substringWithRange:NSMakeRange((range.location -1), 1)] isEqualToString:@"ץ"]) || ([[textField.text substringWithRange:NSMakeRange((range.location -1), 1)] isEqualToString:@"ם"]) || ([[textField.text substringWithRange:NSMakeRange((range.location -1), 1)] isEqualToString:@"ן"])))   
    {
        return NO;
    }

    // set the text field value manually
    NSString *newValue = [[textField text] stringByReplacingCharactersInRange:range withString:string];
    newValue = [[newValue componentsSeparatedByCharactersInSet:nonNumberSet] componentsJoinedByString:@""];
    textField.text = newValue;
    // return NO because we're manually setting the value
    return NO;
}

Returnキーボードをクリックするとやりたいことが消えてしまいます。私はそれをすることはできません。どこにどのように追加しますか?

4

3 に答える 3

7

キーをタップした後にキーボードを非表示にする場合はreturn、コードに次を追加します。

if ([string isEqualToString:@"\n"]) {
    [theTextField resignFirstResponder];
    return NO;
}

それが役に立てば幸い

于 2012-05-24T05:44:38.293 に答える
3

UITextField textFieldShouldReturn のデリゲート メソッドで使用:-

[yourTextField resignFirestResponder];

また、クラスに UITextFieldDelegate を実装し、viewDidLoad でデリゲートを次のように設定します。

yourTextField.delegate=self;
于 2012-05-24T05:43:41.993 に答える
1

IBAction を作成し、それを TextField ビューに接続します。

-(IBAction)doneEditing:(id)sender
{
     [sender resignFirstResponder];
}

ファイルの所有者に接続しているときに、終了時に終了したイベントを選択します。

于 2012-05-24T06:18:13.860 に答える