Я хочу создать категорию, которая работает так же, какКак создать категорию TextField
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
Преимущества этого метода он не позволяет пользователю вводить недопустимые символы.
Возможно ли управлять этим методом в категории TextFiled.
Приведенный ниже код подтверждает правильность текстового поля. Любой может помочь мне создать его категорию.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == NameText)
{
if ([string isEqualToString:@""])
{
NSString *originalString = textField.text;
NSInteger newLength = [textField.text length];
if (originalString.length > newLength)
NameText.text = [originalString substringToIndex:newLength];
return YES;
}
else
{
BOOL canEdit=NO;
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"1234567890-/:;()&@\".,?!'[]{}#%^*+=_\\|~<>$£₹€•"];
for (int i = 0; i < [string length]; i++)
{
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c])
{
canEdit=NO;
}
else
{
if ([NameText.text length] >= 10)
{
canEdit=NO;
}
else
{
canEdit=YES;
}
}
}
return canEdit;
}
}
return YES;
}
Примечание: Я не хочу, чтобы создать какой-либо специальный метод, который показывает уведомление , когда пользователь вводит неверные данные. Я хочу, чтобы этот пользователь не смог ввести недопустимые данные .
Вы хотите расширение UITextField действовать в качестве своего собственного делегата? Я не думаю, что вы можете это сделать, используя расширение, но вы можете подклассифицировать UITextField и напрямую обратиться к этому подклассу из IB (Редактор раскадровки). –
не получаю вашу мысль, кратко. –
Хорошо. Почему вы хотите сделать это в категории? Это просто повторное использование решения? Затем подкласс UITextField и в подклассе init mehtod позволяют делегату ссылаться на себя. Разумеется, ваш подкласс должен соответствовать протоколу UITextFieldDelegate. Вы не можете делать это любым способом многократного использования в расширении или в категории без дальнейших строк кода, где бы вы его повторно не использовали. –