2015-11-17 3 views
2

Четкий ответ на обнаружение обратного пространства заключается в создании подкласса UITextField и переопределении свойства deleteBackward.iOS: обнаружение backspace в пустом UITextField с подклассом UITextField

Я создал подкласс подкласса UITextField, но я получаю эту ошибку:

'NSInvalidArgumentException', reason: '-[UITextField setMyDelegate:]: unrecognized selector sent to instance

Это мой подкласс код:

Мой TextField.h:

@protocol MyTextFieldDelegate <NSObject> 
@optional 
- (void)textFieldDidDelete; 
@end 

@interface MyTextField : UITextField<UIKeyInput> 
//create "myDelegate" 
@property (nonatomic, assign) id<MyTextFieldDelegate> myDelegate; 
@end 

My TextField.m:

- (void)deleteBackward { 
    [super deleteBackward]; 

    if ([_myDelegate respondsToSelector:@selector(textFieldDidDelete)]){ 
     [_myDelegate textFieldDidDelete]; 
    } 
} 

В моей ViewController, что я хотел бы получить доступ к UITextField подкласса я делаю следующее:

#import "MyTextField.h" 

<MyTextFieldDelegate> 
@property (nonatomic, strong) IBOutlet MyTextField *passcode1; 
self.passcode1.myDelegate = self; 

Любые идеи относительно того, почему я получаю непризнанный ошибку выбора? Мне кажется, что я сделал все правильно в подклассе UITextField.

+0

sry ... я пропустил это: P –

+0

@ Mr.T любые идеи относительно того, почему я получаю ошибку? –

+0

У вас есть метод textfieldiddlete в вашем контроллере? –

ответ

2

Проблема с вашей розеткой. Свойство определяется вашим пользовательским классом, но в интерфейсе Builder вы добавили простой старый UITextField. Следовательно, ошибка во время выполнения. В интерфейсе Buldier обновите класс текстового поля как свой собственный класс.

+0

Спасибо! Это была проблема, я создал пользовательский интерфейс, прежде чем я сделал подкласс, поэтому я никогда не думал возвращаться и вносить какие-либо изменения в конструктор интерфейса. Хороший звонок! –

Смежные вопросы