UITextField 溢出

UITextField overflow

我为 UITextField 创建了一个简单的子类,它按预期工作。我遇到的唯一问题是当文本值变得太大时,它会溢出到清除按钮中。

我似乎无法找到如何仅更改文本的右侧以添加一些填充以不与清除按钮相交。

#import "TextField.h"
#import <QuartzCore/QuartzCore.h>

IB_DESIGNABLE

@implementation TextField

- (void)awakeFromNib {
    self.layer.borderColor = [[[UIColor grayColor] colorWithAlphaComponent:0.5] CGColor];
    [self.layer setBorderWidth:0.6];
    self.layer.cornerRadius = 4;
    self.layer.masksToBounds = YES;
}

- (CGRect)textRectForBounds:(CGRect)bounds {
    return CGRectInset(bounds, 12, 0);
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    return [self textRectForBounds:bounds];
}

@end

我已经设法移动了文本的两侧,因此它不会溢出到按钮中,但是左侧看起来很奇怪,因为它有额外的间距。如何只在文本的右侧或清除按钮的左侧添加填充?

只需将您的矩形移动一点。

- (CGRect)textRectForBounds:(CGRect)bounds {
    return CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.width - 10, bounds.size.height);
}

通过扩展,您的编辑矩形也应该更新,因为您将它基于 textRect。