UITextField 无法将占位符居中并更改键盘颜色书写

Posted

技术标签:

【中文标题】UITextField 无法将占位符居中并更改键盘颜色书写【英文标题】:UITextField troubles centering placeholder and changing the keyboard color writing 【发布时间】:2015-03-14 14:40:05 【问题描述】:

我实际上正在为我的 ios 应用程序填写注册表。

我对 iO 还是很陌生,但由于 uiTableViewCell 自定义和 uiTextField,我设法制作了一个漂亮的注册表单。

我现在面临 2 个实际无法解决的问题:

1) 当我将 UITextField 居中对齐时,它并没有真正居中,或者它可能确实居中,但随后它开始在中心写入我的字符串而不是使字符串本身居中,即使我确实使用单元格框架初始化了我的 TextField (如果需要,请参见图片)。

2) 我设法更改了 UITextField 文本颜色,但是当键盘显示时,它实际上又开始写黑色而不是白色。我可以改变这个吗?

抱歉我的英语不好,不是我的母语,但仍在努力,感谢您的帮助

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

   NSString *identifier = @"id";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
   if (cell == nil)
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
   
   if (indexPath.section == 0)
    self.LastName = [[UITextField alloc] initWithFrame:cell.contentView.bounds];
    self.LastName.placeholder= @"Name";
    self.LastName.autocorrectionType = UITextAutocorrectionTypeNo;
    self.LastName.delegate = self;
    self.LastName.textAlignment = NSTextAlignmentCenter;
    [self.LastName setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];

    [cell.contentView addSubview:self.LastName];

else if (indexPath.section == 1)
    cell.textLabel.text = @"Name";

cell.textLabel.textAlignment = NSTextAlignmentCenter;

第一个单元格是我的 UITextField,第二个是我的正常居中单元格(我没有 10 个声誉,所以我可以给你们一个图片链接,对不起..http://s22.postimg.org/sep2kcvrl/not_Working.png

【问题讨论】:

你想在文本域中居中还是文本域本身居中? 我想得到与 cell.textLabel.textAlignment 相同的结果,将字符串居中到单元格中,而不是从中心到右上角开始写入。不知道够不够清楚 【参考方案1】:

您只是更改占位符文本的颜色,以更改文本字段中文本的颜色:

 [self.LastName setTextColor:[UIColor whiteColor]];

要将占位符和文本字段的文本居中对齐:

[self.LastName setTextAlignment:NSTextAlignmentCenter];

【讨论】:

只需设置颜色即可很好地解决键盘问题,谢谢,但即使您修复了对齐方式,我仍然得到与图片相同的结果,它保持对齐字符串的开头而不是字符串本身,可悲的是:(【参考方案2】:

关于第二个问题:

UITextField 中有“defaultTextAttributes”属性,可用于颜色(在 iOS7+ 中可用)。

NSMutableDictionary* textFieldAttrib = [[self.textField defaultTextAttributes] mutableCopy];
textFieldAttrib[@"NSColor"] = [UIColor redColor];
self.textField.defaultTextAttributes = textFieldAttrib;

您也可以通过“attributedPlaceholder”属性更改占位符颜色(在 iOS6+ 中可用)。

NSString *placeHolderText = @"some placeholder";
NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString: placeHolderText
                                                                  attributes:@NSForegroundColorAttributeName : [UIColor greenColor]];

self.textField.attributedPlaceholder = placeholder;

【讨论】:

以上是关于UITextField 无法将占位符居中并更改键盘颜色书写的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 占位符对齐滚动问题

使用用户属性更改 UITextField 的占位符文本颜色?

UITextField 占位符问题

UISearchBar 更改占位符颜色

将占位符添加到 UITextField,如何以编程方式快速设置占位符文本?

RTL iOS9上奇怪的UITextField占位符行为