【问题标题】:Programmatically adding UITextField to a dropdownlist以编程方式将 UITextField 添加到下拉列表
【发布时间】:2012-10-23 19:42:32
【问题描述】:

我有一个由 UITableViewController 控制的 tableview。 在这个 UITableViewController 类中,我通过将这些行添加到我的 viewDidLoad 方法,以编程方式向我的 UINavigationItem 添加了一个UITextField

CGRect passwordTextFieldFrame = CGRectMake(20.0f, 100.0f, 280.0f, 31.0f);
UITextField *passwordTextField = [[UITextField alloc] initWithFrame:passwordTextFieldFrame];
passwordTextField.placeholder = @"Password";
passwordTextField.backgroundColor = [UIColor whiteColor];
passwordTextField.textColor = [UIColor blackColor];
passwordTextField.font = [UIFont systemFontOfSize:14.0f];
passwordTextField.borderStyle = UITextBorderStyleRoundedRect;
passwordTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
passwordTextField.returnKeyType = UIReturnKeyDone;
passwordTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
passwordTextField.tag = 2;
passwordTextField.autocapitalizationType = UITextAutocapitalizationTypeNone;
passwordTextField.delegate = self; // ADD THIS LINE
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:passwordTextField];

UITextField 正确显示在我的导航栏上,但是当我单击它时,textFieldDidBeginEditing 永远不会触发。

我已将 与 textFieldDidBeginEditing 方法一起添加到我的头文件中。

我尝试在由 UIViewController 控制的视图中执行完全相同的操作,当我单击“文本字段”时,此处的 textFieldDidBeginEditing 被触发 - 所以我怀疑我将文本字段添加到 UITableViewController 的事实是造成问题的原因。

您可能会想-为什么不将“uinavigationbutton”添加到“NavigationBar”中-但我不能因为单击按钮时要调用的uidropdownmenu只接受“UITextField”。

【问题讨论】:

    标签: ios uitextfield uinavigationbar


    【解决方案1】:

    尝试再添加一行:

    [passwordTextField becomeFirstResponder];
    

    【讨论】:

    • 感谢您的回复 - 但是当我单击文本字段时,我的断点仍然没有在 textFieldDidBeginEditing 内触发
    • 父视图控制器必须实现这个委托: UITextFieldDelegate - 尝试在封闭的视图控制器下实现它。如果那不起作用,您可能需要通过导航栏实现它。为此,您需要为实现此协议的 UINavigationbar 实现一个类别。就像在这里完成的那样:developer.apple.com/library/ios/#samplecode/SimpleFTPSample/…
    • 我倾向于相信您拥有 passwordTextField 的类应该实现 UITextFieldDelegate 并且它会起作用。像@interface YourClass () 。我高度认为它将是您的 UITableViewController 派生控制器。
    • 感谢您的回答 - 我已经将 UITextFieldDelegate 协议添加到我的班级 - 就像这样:@interface LMResultsTableViewController : UITableViewController
    • 我也尝试将 UITextFieldDelegate 添加到 .m 类中 - 像这样:@interface LMResultsTableViewController () 但仍然没有运气
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 2011-10-15
    • 1970-01-01
    • 2013-06-06
    • 2021-09-27
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多