Программно создавать события UITextField - PullRequest
4 голосов
/ 07 февраля 2011

Я иногда добавляю текстовые поля программно в TableView при создании строк.Я пытаюсь подписаться на событие TouchUpInside этих textFields, выполнив это

UITextField *eTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 12, 145, 25)];
eTextField.delegate = self;
[eTextField addTarget:self action:@selector(showPicker)
forControlEvents:UIControlEventTouchUpInside];

showPicker является IBAction без параметров.Есть ли что-то, что мне еще нужно сделать?

Есть ли что-то, чего мне не хватает?Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 05 января 2013

Не должно ли это быть [eTextField addTarget: self action: @selector (showPicker *: *) Также вам не назначен UIControlEvent.

Итак:

[eTextField addTarget:self action:@selector(showPicker)

Вероятно, следует изменить на

[eTextField addTarget:self action:@selector(showPicker:) forControlEvents:UIControlEventEditingDidBegin];
1 голос
/ 07 февраля 2011

Если вы пытаетесь отобразить средство выбора для текстового поля вместо клавиатуры, вы должны назначить представление средства выбора как inputView текстового поля.

Но если вы хотите запустить какой-либо методкогда пользователь касается текстового поля, вы должны переопределить метод делегата текстового поля

textFieldDidBeginEditing

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

0 голосов
/ 13 мая 2011

Вы можете попробовать это ...

1. Переопределить textFieldDidEndEditing в вашем файле viewController.m.См. Пример кода ниже:

-(BOOL)textFieldDidEndEditing:(UITextField*) tf{
 //your piece of code (goNext?)  
}

2.Удалите

[eTextField addTarget:self action:@selector(goNext) forControlEvents:UIControlEventEventEditingDidEnd];

из вашего кода.

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