将 UITextField 添加到 UIToolbar 不起作用

Posted

技术标签:

【中文标题】将 UITextField 添加到 UIToolbar 不起作用【英文标题】:Adding UITextField to UIToolbar does not work 【发布时间】:2013-09-14 14:39:15 【问题描述】:

我试图在我的 UINavigationView 上向 UIToolbar 添加一个 UITextField,但它没有出现在工具栏上。代码非常简单。这是它的样子:

- (void)viewDidLoad

    [super viewDidLoad];
    self.navigationController.toolbarHidden = NO;
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 32)];
    UIBarButtonItem *textFieldItem = [[UIBarButtonItem alloc] initWithCustomView:textField];
    self.toolbarItems = [NSArray arrayWithObjects: textFieldItem, nil];


我尝试添加其他工具栏项,但它们都有效。例如,下面的代码没有问题。

- (void)viewDidLoad

    [super viewDidLoad];
    self.navigationController.toolbarHidden = NO;
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(openCamera:)];
    self.toolbarItems = [NSArray arrayWithObjects: buttonItem, nil];



- (void)openCamera:(NSString *)str

   // some code..

这是我对默认生成的单视图应用程序所做的唯一更改,我不知道为什么它不起作用。顺便说一句,我在 ios7 上。有人知道发生了什么吗?谢谢!

【问题讨论】:

代码看起来没问题,尝试在 iOS 6 上运行以确保并考虑提出错误报告。同时添加一些其他按钮项,看看它们是如何布局的。 我试过在iOS6.1模拟器上运行,还是不行。我想这毕竟不是iOS版本的问题。此外,当我同时添加它们时,只会显示其余的工具栏项。 textField 没有。 【参考方案1】:

UITextFieldborderStyle 属性默认设置为UITextBorderStyleNone。这可能是它看起来不可见的原因。试试这个:

urlField.borderStyle = UITextBorderStyleRoundedRect;

另一方面,当我的视图没有按预期显示时,我通常会尝试显示它的边框以帮助我确定它是否真的在屏幕上。

view.layer.borderWidth = 1.0f;
view.layer.borderColor = [[UIColor magentaColor] CGColor];

【讨论】:

以上是关于将 UITextField 添加到 UIToolbar 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将左侧边距添加到 UITextField

iOS - 将点击手势添加到 UITextField

将 UITextField 添加到 UIToolbar 不起作用

单击按钮,将UITextField添加到UITableView

让按钮快速将文本添加到 UITextField

无法将 UITextField 添加到 UIScrollView