带有占位符错误的UITextField清除按钮?

时间:2011-02-13 22:20:42

标签: iphone objective-c xcode uitextfield

我有一个UITextField,其clearButton属性设置为“编辑时”。文本字段右对齐。当我专注于要编辑的文本字段时,占位符文本不会移动,因此插入符号闪烁,占位符文本的一半被删除。

有没有人有解决方法?

4 个答案:

答案 0 :(得分:3)

我刚刚遇到了同样的问题!对我来说它确实看起来像一个错误 - 为清除按钮保留的区域将占位符剪辑到右侧。 解决方法我发现它将清除按钮样式更改为“always”,这是一个误称,因为当占位符可见时(即文本为空时),仍然不显示清除按钮:

textField.clearButtonMode = UITextFieldViewModeAlways;

这确实意味着占位符没有完全对齐(为清除按钮留出空间,即使它不存在),如果确实显示了清除按钮,这将是正常的!这可以通过某种方式确保UITextField始终包含空格而不是空白来固定,从而强制清除按钮始终(并且这意味着始终!)显示。

答案 1 :(得分:1)

我有同样的问题,我解决了使用textfield委托方法管理buttonMode(在我的情况下我使用的是自定义rightView)。我详细介绍了这些:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

- (void)textFieldDidChange:(UITextField *)textField
{
    if (textField.text.length == 0) {
        textField.rightViewMode = UITextFieldViewModeNever;
    } else {
        textField.rightViewMode = UITextFieldViewModeAlways;
    }
}

textFieldDidChange:方法是我为UIControlEventEditingChanged控制事件添加到UITextField的自定义操作。

答案 2 :(得分:0)

我最后通过将前景颜色更改为银色/灰色来伪造占位符,当用户聚焦时,我清除了txt等。

答案 3 :(得分:0)

此问题已在iOS 5中修复:)谢谢Apple!