Отключенная кнопка UIB зависит от 4 полей UITextFields - PullRequest
0 голосов
/ 05 июня 2011

У меня есть 4 UITextFields, которые я использую, чтобы не использовать 2 кнопки UIB, пока во все 4 поля не будут введены данные. Пока у меня есть следующий код

- (void)textFieldDidBeginEditing:(UITextField *)textField {


if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) {
    [calcOneButton setEnabled:YES];
    [calcTwoButton setEnabled:YES];

}else {

}


}

У меня есть ряд проблем с этим: -

  1. Когда данные удаляются из полей, кнопки UIB по-прежнему включены
  2. Кнопки не включаются правильно, после того, как я ввел данные во все 4 поля, мне нужно повторно нажать на поле, чтобы активировать кнопку.
  3. Я записываю длину каждого поля, но после ввода символа оно начинается с 0, а не 1.

Может кто-нибудь помочь с этими точками?

Код для регистрации длины поля выглядит следующим образом: -

#define MAXLENGTH 5
#define MAXQTY 3
#define MAXSIZE 4
#define MAXBRAND 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == brand) {
    int lengtha = [brand.text length] ;
    NSLog(@"lenghta = %d",lengtha);
    if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
        brand.text = [brand.text substringToIndex:MAXBRAND];
        return NO;
    }

он следует одинаковому формату для всех 4 полей, но при вводе символа NSlog выдает 0, затем 1 для второго символа и т. Д.

1 Ответ

0 голосов
/ 05 июня 2011

Просто используйте другой метод делегата.

Либо используйте: textFieldDidEndEditing:, как сказал вам Криптон в комментарии

, либо используйте textField:shouldChangeCharactersInRange:replacementString: для включения / отключения непосредственно при наборе текста.

textField:(UITextField*)aTextField shouldChangeCharactersInRange:(NSRange) aRange replacementString:(NSString*)aRepString
{
    NSString *newStr = [aTextField.text stringByReplacingCharactersInRange:aRange withString:aRepString];
    if([newStr length]>0 && /*otherStringLength > 0*/)
          //enable
    else
          //disable
    return YES;
 }

Но я думаю, что наиболее распространенным способом является использование didEndEditing -метода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...