2012-02-25 3 views
0

Я не могу понять, почему этот код не работает для меня.UITextField bind

ViewController.h

... 
@property (nonatomic, copy) UITextField *textField; 
... 

ViewController.m

-(void)viewDidLoad 
{ 

    [self.textField addTarget:self 
          action:@selector(textIsChanged:) 
          forControlEvents:UIControlEventEditingChanged]; 

} 

-(void)textIsChanged:(id)sender; 
{ 
    NSLog(@"Changed"); 
} 

Когда я что-то типа в методе TextField textIsChanged никогда не вызывается.

+0

Одним из решений было бы реализовать протокол UITextViewDelegate в вашем viewController (и сделать его делегатом textField). Но сначала вы можете просто попробовать поставить - (void) textIsChanged: (id) отправитель; в viewController интерфейс (в файле .h) –

+0

Я думаю, что свойство должно быть 'keep' not' copy' –

ответ

2

Вы должны объявить textField как IBOutlet, как это:

@property (nonatomic, retain) IBOutlet UITextField *textField; 

или, если вы используете ARC (Автоматический подсчет ссылок):

@property (nonatomic, strong) IBOutlet UITextField *textField; 

и связать его из файла XIb в интерфейсе строитель.

+0

Я сделал это уже, но я получаю - [UITextInputTraits addTarget: действие: forControlEvents:]: нераспознанный селектор отправлен в экземпляр 0x68f5ac0 – OhDoh

+3

Я не эксперт ... но разве у вас и у него есть это свойство как 'keep' not' copy'? –

+0

@TomH - Я этого не замечал. Вероятно, вы должны опубликовать это как ответ. Это может решить проблему OP. – sch