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 的占位符文本颜色?