以编程方式将百分号添加到UITextField

4
我想知道如何在任何插入到UiTextfield中的数字上添加一个%符号,以便用户可以了解它是类似于在Excel中设置单元格类型时$或%符号工作的百分比。我已经在stackoverflow上看过了,但是想知道是否有其他方法而不是使用观察者附加一个%。
3个回答

10

你想要的是UITextFieldrightView属性。这是我编写的一个小类别,可以帮助你为文本字段设置永久前缀或后缀:

@implementation UITextField (Additions)

- (void)setPrefixText:(NSString *)prefix
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    [label setBackgroundColor:[UIColor clearColor]];
    [label setFont:[UIFont fontWithName:self.font.fontName size:self.font.pointSize]];
    [label setTextColor:self.textColor];
    [label setAlpha:.5];
    [label setText:prefix];

    CGSize prefixSize = [prefix sizeWithFont:label.font];
    label.frame = CGRectMake(0, 0, prefixSize.width, self.frame.size.height);

    [self setLeftView:label];
    [self setLeftViewMode:UITextFieldViewModeAlways];
    [label release];
}

- (void)setSuffixText:(NSString *)suffix
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    [label setBackgroundColor:[UIColor clearColor]];
    [label setFont:[UIFont fontWithName:self.font.fontName size:self.font.pointSize]];
    [label setTextColor:self.textColor];
    [label setAlpha:.5];
    [label setText:suffix];

    CGSize suffixSize = [suffix sizeWithFont:label.font];
    label.frame = CGRectMake(0, 0, suffixSize.width, self.frame.size.height);

    [self setRightView:label];
    [self setRightViewMode:UITextFieldViewModeAlways];
    [label release];
}

@end

顺便提一下:https://stackoverflow.com/search?q=uitextfield+rightview:截至目前为止有4,099个结果。


1
这个解决方案非常棒,非常感谢,对类别的使用非常好。 - StackRunner
iOS 7中值得注意的一件事是它将右/左视图向下偏移了1像素。我已经通过在另一个视图中插入标签并将其向上偏移1像素来解决了这个问题。 - JakubKnejzlik

3
[NSString stringWithFormat:@"%d%%", number];

谢谢您的回复,但我想避免手动将百分号附加到UITextField上。 - StackRunner

0

使用 UITextFieldDelegatetextFieldDidEndEditing: 方法。

示例:

- (void)textFieldDidEndEditing:(UITextField *)textField {

    NSString *oldText = textField.text;

    textField.text = [NSString stringWithFormat:@"%@ %%",oldText];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接