Отключить определенную клавишу в клавиатуре пользовательского интерфейса

Необходимо отключить клавишу «&» на клавиатуре с цифрами и пунктуацией, поэтому можно ли отключить конкретную клавишу в UIKeyboard?


person rptwsthi    schedule 07.09.2011    source источник


Ответы (3)


Я не думаю, что возможно отключить определенную клавишу (если только это не одна из клавиш действия, такая как клавиша возврата), но если вы используете UITextField, вы можете использовать метод делегата - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string, чтобы увидеть, нажал ли пользователь клавишу & и удалить его из строки

person Suhail Patel    schedule 07.09.2011

Тебе этого не сделать. Однако ваши варианты:

  • создайте свою собственную клавиатуру, не предлагая клавишу «&» (слишком много усилий, IMO)
  • Если вы используете UITextField, вы можете проверить текст, отправленный пользователем: удалить «&» и/или сообщить пользователю, что использование «&» запрещено (намного проще).

EDIT: вы также можете связать событие UITextField "Editing Changed" с IBAction владельца файла и отфильтровать там "&".

person matm    schedule 07.09.2011

Существует один метод делегата для textField, в котором вы можете блокировать определенные символы, если хотите, на основе их значений ASCII. Метод можно записать следующим образом:

-(BOOL)keyboardInput:(id)k shouldInsertText:(id)i isMarkedText:(int)b 
{
char s=[i characterAtIndex:0];
  if(selTextField.tag==1)
    {
        if(s>=48 && s<=57 && s == 38)  // 48 to 57 are the numbers and 38 is the '&' symbol
        {
            return YES;
        }
         else
        {
            return NO;
        }

    }
}

Этот метод позволит пользователю вводить только цифры и символ &. Даже если пользователь нажмет другие символы, они не будут введены. И поскольку это метод делегата textField, вам не нужно беспокоиться о его явном вызове.

person Dip Dhingani    schedule 07.09.2011