【问题标题】:iOS 6: UITextField textAlignment does not change cursor positioniOS 6:UITextField textAlignment 不会改变光标位置
【发布时间】:2014-03-27 16:23:07
【问题描述】:

我使用 UITextField 的一个实例,其中文本通常向右对齐,但在编辑时切换到左对齐。这是通过在editingDidBegin 事件上调用setTextAlignment: 来完成的。自 iOS 6 更新以来,这表现得很奇怪:文本对齐方式从右到左正确更改,但光标仍停留在文本字段的最右侧,直到执行某些输入。

有人知道如何恢复预期的行为,以便在更改对齐方式时光标也移动吗?

给出一些上下文:我使用文本字段来显示一个带有单位的值。该单元在编辑过程中被删除,然后在用户按 Enter 后再次显示。

在事件 editingDidBegin 上调用的方法:

- (IBAction)textEditingDidBegin:(UITextField *)sender
{
    [sender setTextAlignment:NSTextAlignmentLeft];
    [sender setText:[NSString stringWithFormat:@"%.0f", width]];
}

在事件 editingDidEnd 上调用的方法:

- (IBAction)textEditingDidEnd:(id)sender
{
    [sender setTextAlignment:UITextAlignmentRight];
    [sender setText:[NSString stringWithFormat:@"%.0f m", width]];
}

【问题讨论】:

    标签: ios6 uitextfield text-alignment


    【解决方案1】:

    尝试将 textView 作为第一响应者,然后立即使其成为第一响应者。

    textView.textAlignment = NSTextAlignmentCenter;
    [textView resignFirstResponder];
    [textView becomeFirstResponder];
    

    【讨论】:

      【解决方案2】:
      -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
          textField.textAlignment = NSTextAlignmentLeft ;
          return YES ;
      }
      

      在编辑之前更改 textAlignment 确实开始。我知道这样做的最佳位置是 UITextFieldDelegate 方法textFieldShouldBeginEditing

      【讨论】:

      • 谢谢,帮了大忙!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2014-07-06
      • 2020-12-20
      • 1970-01-01
      • 2012-03-23
      • 2012-04-16
      • 2010-12-02
      相关资源
      最近更新 更多