Если вы не хотите добавлять IBOutlet к каждому из textFileds, другой способ сделать это - установить и отслеживать номер тега для идентификации каждого UITextField
.Кстати, это также будет работать с любым объектом UIView, таким как кнопки, изображения и т. Д. Добавление тега к чему-либо также позволяет получить ссылку на этот объект, вызвав [self.view viewWithTag:MY_DEFINED_TAG_ID];
, что может пригодиться.
В этом случае вы должны начать с файла xib, куда вы перетаскивали UITextField в окно и установить для каждого поля собственный тег #, который вы можете использовать для проверки идентификатора поля из вашего метода.В инспекторе атрибутов вы найдете поле «Тег».
В дополнение к этому вы можете в своем файле .h определить теги, чтобы их было легче отслеживать.Этот список определений может находиться в файле yourClass.h или Constants.h, если у вас есть такой файл, и в этом случае просто убедитесь, что вы #import Constants.h включены в файл yourClass.h.Я знаю, что есть и другие места, где вы могли бы все это определить, но это два.
#define TEXTFIELD1_TAG 900
#define TEXTFIELD2_TAG 901
#define TEXTFIELD3_TAG 902
#define TEXTFIELD4_TAG 903
Если вы собираетесь использовать – textFieldShouldBeginEditing:
или любой другой метод делегата, убедитесь, что ваш класс UITextFieldDelegate
.В yourClass.h (я предполагаю, что это viewController) вам понадобится такая строка:
@interface My_ViewController : UIViewController < UITextFieldDelegate >
Затем вы сможете использовать любой из этих методов в своем представлении для отслеживания textFields:
– textFieldShouldBeginEditing:
– textFieldDidBeginEditing:
– textFieldShouldEndEditing:
– textFieldDidEndEditing:
– textField:shouldChangeCharactersInRange:replacementString:
– textFieldShouldClear:
– textFieldShouldReturn:
Но есть и другие варианты размещения кода переключателя / регистра в зависимости от вашего рабочего процесса.Если вы посмотрите в свой файл xib, то обнаружите, что с вашим текстовым полем связано множество событий, которые могут запускать любой пользовательский метод, который вы пишете.Например, вы можете подключить событие TouchDown для запуска пользовательского метода, подобного приведенному ниже, который содержит код переключателя / регистра, который вы можете поместить в любое место, где вам нужно.
В этом методе я использую #define, которое мы виделивыше, чтобы проверить значения тега.Таким образом, мне не нужно запоминать номер тега, я могу просто вспомнить TEXTFIELD1_TAG
, что намного проще.
- (IBAction)textFieldHasBeenTouched:(id)sender {
int textFieldTag = sender.tag
switch (textFieldTag)
{
case TEXTFIELD1_TAG:
// TextField 1
break;
case TEXTFIELD2_TAG:
// TextField 2
break;
case TEXTFIELD3_TAG:
// TextField 3
break;
case TEXTFIELD4_TAG:
// TextField 4
break;
default:
break;
}
}
Или используйте один из методов делегата.В этом методе я предполагал, что вы не используете #define для отслеживания тегов.Но так как вы установили их в xib, вы знаете, что они есть.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
switch ([textField tag])
{
case 900:
// TextField 1
break;
case 901:
// TextField 2
break;
case 902:
// TextField 3
break;
case 903:
// TextField 4
break;
default:
break;
}
return YES;
}