我有一个UITextField
我希望始终将所有内容(文本,光标)置于中心位置。在iOS 7中这可能吗?我目前对视图的初始化如下所示。
self.textField = [[UITextField alloc] init];
self.textField.delegate = self;
[self.textField setTextAlignment:NSTextAlignmentCenter];
self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
self.textField setTranslatesAutoresizingMaskIntoConstraints:NO];
self.textField.placeholder = NSLocalizedString(@"Enter some text", @"The placeholder text to use for this input field");
我对此的要求是,当我点击UITextField
时,占位符文本应该会消失,并将光标显示在UITextField
的中间。
目前,这似乎是间歇性地定位在文本字段的中间或文本字段的左侧,与我单击的位置无关。有人对我如何解决这个问题有任何建议,或者它是iOS中的一个已知问题?
答案 0 :(得分:3)
如果你在故事板中创建了UITextField,则不应该初始化并在代码中分配它。
您需要使用Textfield代理来完成此任务..
- (void)viewDidLoad
{
[super viewDidLoad];
self.textField.delegate = self;
[self.textField setTextAlignment:NSTextAlignmentCenter];
self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
[self.textField setTranslatesAutoresizingMaskIntoConstraints:NO];
self.textField.placeholder = @"Enter some text";
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
//this removes your placeholder when textField get tapped
self.textField.placeholder = nil;
//this sets your cursor to the middle
self.textField.text = @" ";
}
-(void)textFieldDidEndEditing:(UITextField *)textField
{
self.textField.placeholder = @"The placeholder text to use for this input field";
}
这肯定可以解决问题..如果有帮助,请接受答案。
<强>更新强>
当用户按退格键时,如果代码如下,则光标将不会将文本对齐到左侧。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *proposedNewString = [[textField text] stringByReplacingCharactersInRange:range withString:string];
NSLog(@"propose: %@", proposedNewString);
if ([proposedNewString isEqualToString:@""])
{
textField.text = [@" " stringByAppendingString:textField.text];
}
return YES;
}