2012-05-24 2 views
3

Это мой код:Невозможно скрыть клавиатуру с shouldChangeCharactersInRange

- (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 клавиатура исчезнет. Я не могу этого сделать. где его добавить и как?

ответ

7

Если вы хотите, чтобы скрыть клавиатура после нажатия клавиши return добавить в код:

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

Надеюсь, это поможет

+0

спасибо, чувак! помогли мне много! –

+0

Это помогло мне с другим вопросом. Я забыл разрешить возврат ключа при фильтрации текста UISearchBar. –

3

в методе делегата от UITextField textFieldShouldReturn использовать: -

[yourTextField resignFirestResponder]; 

также осуществлять UITextFieldDelegate в своем классе и установить делегат в viewDidLoad как: -

yourTextField.delegate=self; 
+0

спасибо человеку. догадаться. –

1

Создайте IBAction и соедините его с вашим видом TextField.

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

Выберите событие ли конец на выход при подключении, чтобы владелец файла.

Смежные вопросы