gpt4 book ai didi

ios - UITextField secureTextEntry 带有自定义字体的项目符号?

转载 作者:IT老高 更新时间:2023-10-28 11:45:20 38 4
gpt4 key购买 nike

我在 UITextField 中使用自定义字体,该字体已打开 secureTextEntry。当我在单元格中输入时,我会看到我选择的字体的项目符号,但是当字段失去焦点时,这些项目符号会恢复为系统标准字体。如果我再次点击该字段,它们会变回我的字体,依此类推。

有没有一种方法可以确保它们继续显示自定义字体的项目符号,即使字段失焦?

enter image description here enter image description here

最佳答案

解决此问题的子类。创建一个任意UITextField,然后将secure属性设置为YES(通过IB中的KVC)。

实际上它实现了 lukech 建议的注释.当文本字段结束编辑时,它会切换到任意文本字段,然后在其中设置大量点,并在 text 访问器中进行一些修改,以始终获取该字段包含的实际文本。

@interface SecureTextFieldWithCustomFont : UITextField
@property (nonatomic) BOOL secure;
@property (nonatomic, strong) NSString *actualText;
@end


@implementation SecureTextFieldWithCustomFont


-(void)awakeFromNib
{
[super awakeFromNib];

if (self.secureTextEntry)
{
// Listen for changes.
[self addTarget:self action:@selector(editingDidBegin) forControlEvents:UIControlEventEditingDidBegin];
[self addTarget:self action:@selector(editingDidChange) forControlEvents:UIControlEventEditingChanged];
[self addTarget:self action:@selector(editingDidFinish) forControlEvents:UIControlEventEditingDidEnd];
}
}

-(NSString*)text
{
if (self.editing || self.secure == NO)
{ return [super text]; }

else
{ return self.actualText; }
}

-(void)editingDidBegin
{
self.secureTextEntry = YES;
self.text = self.actualText;
}

-(void)editingDidChange
{ self.actualText = self.text; }

-(void)editingDidFinish
{
self.secureTextEntry = NO;
self.actualText = self.text;
self.text = [self dotPlaceholder];
}

-(NSString*)dotPlaceholder
{
int index = 0;
NSMutableString *dots = @"".mutableCopy;
while (index < self.text.length)
{ [dots appendString:@"•"]; index++; }
return dots;
}


@end

可以扩展为使用非 NIB 实例化、处理默认值等,但您可能明白了。

关于ios - UITextField secureTextEntry 带有自定义字体的项目符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969451/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com