gpt4 book ai didi

iphone - 以编程方式将委托(delegate)实例化到组件

转载 作者:行者123 更新时间:2023-12-01 19:11:41 25 4
gpt4 key购买 nike

我有一个应用程序,它的 Controller 已经为文本字段处理 UITextFieldDelegate,现在我想以编程方式添加第二个 Controller + UITextField,它与主 Controller 分开,但从中调用。

所以我有一个处理输入(正在工作)的 MainController,然后在它旁边,我定义了这个:

@interface TestUIDelegate : UIViewController <UITextFieldDelegate>{

TestUIDelegate 有一个属性 textField。

TestUIDelegate 有一个方法:
- (void)initGUI:(UIView *)myView;

它像这样初始化一个文本字段:
- (void)initGUI:(UIView *)myView {
self.view = myView;
textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15];
textField.placeholder = @"enter text";
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

textField.delegate = self;
[self.view addSubview:textField];
}

这也有效;该字段出现并且是可编辑的,键盘出现并且您可以输入内容。

到目前为止一切顺利,但现在我想完成按钮工作,所以键盘被关闭,所以我补充说:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
NSLog(@"Here?");

return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField{

NSLog(@"Or here?");
}

到我的 TestUIDelegate(实际上我从 TextUIFieldDelegate 添加了所有委托(delegate)方法)。

我从 MainController 中的 didFinishLaunchingWithOptions 实例化 TestUIDelegate,如下所示:
TestUIDelegate *controller = [[TestUIDelegate alloc] init];
[controller initGUI:self.view];

TextField 仍然显示从未调用过委托(delegate)方法,没有一个。现在我想我正在做一些非常奇怪的事情,我已经查看了关于 SO 和谷歌的所有答案,与此略有相关,但他们都通过在 MainController 中实现委托(delegate)来做到这一点,这正是我真正不想要的。我需要它以编程方式; (根本)不使用 gui 构建器。

任何人都可以启发我吗?我不认为我会自己解决这个问题。

最佳答案

您需要添加 textFieldShouldReturn 以使键盘关闭:

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}

TextFieldDidEndEditing 也将被调用,但在此之前您需要 resignFirstResponder 。

关于iphone - 以编程方式将委托(delegate)实例化到组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com