我正在通过IOS HelloWorld示例工作,并且我有一个关于设置TextField委托的问题。在示例中,它像控件一样简单 - 从TextField拖动到ViewController。但现在说我想创建一个自定义类来充当我的委托像这样:IOS设置自定义委托
#import <Foundation/Foundation.h>
@interface SweetAssDelegate : NSObject <UITextFieldDelegate>
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField;
@end
#import "SweetAssDelegate.h"
@implementation SweetAssDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField
{
NSLog(@"Calling Delegate");
[theTextField resignFirstResponder];
return YES;
}
@end
如何设置这个类是文本字段的委托?据我所知,没有办法通过GUI完成这一任务。我试着手动设置窗口中加载后的代表团,但没有成功:
#import "ViewController.h"
#import "SweetAssDelegate.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet UITextField *inputField;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
SweetAssDelegate *foo = [[SweetAssDelegate alloc] init];
[self.inputField setDelegate:foo];
NSLog(@"Delegate: %@", self.inputField.delegate);
}
造就了键盘的时候我居然得到某种内存异常?有任何想法吗?谢谢。
作为一个侧面的问题,我应该在哪里使用viewDidLoad来初始化任何变量?我注意到init不被称为?
什么样的内存异常? –
应该不需要在'SweetAssDelegate'的接口中声明' - (BOOL)textFieldShouldReturn:(UITextField *)theTextField;',因为它已经在你的类实现的'UITextFieldDelegate'中声明了。 –