【发布时间】:2011-03-17 20:12:40
【问题描述】:
是否可以更改显示的安全密码字符?
【问题讨论】:
标签: iphone iphone-sdk-3.0 uitextfield
是否可以更改显示的安全密码字符?
【问题讨论】:
标签: iphone iphone-sdk-3.0 uitextfield
假设 Bobby B 是正确的,因为不可能更改秘密字符,
我特此介绍,
没有任何保证和所有适用的警告,
因为这是一个可怕的组合,在某些时候肯定会让你头疼,
希望不要因此而被低估:
/* don't ever use this PROOF OF CONCEPT CODE for production use */
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ( self.backing == nil ) self.backing = @"";
static BOOL pasting = false;
if ( !pasting )
{
self.backing = [self.backing stringByReplacingCharactersInRange:range withString:string];
NSLog(@"backing: %@",self.backing);
if ( [string length] == 0 ) return YES; // early bail out when just deleting chars
NSString *sec = @"";
for ( int i=0;i<[string length]; i++ ) sec = [sec stringByAppendingFormat:@"■"];
pasting = true;
[[UIPasteboard generalPasteboard] setString:sec];
[textField paste:self];
return NO;
} else {
pasting = false;
return YES;
}
}
/* you have been warned */
将您的UITextField 的委托设置为包含此函数的类。
只要确保你有self.backing,它是一个保留的NSString*。需要复制和粘贴工具来保留光标位置。
我对粘贴一无所知,这是一个疯狂的猜测,但它确实有效,但您需要确定这是否会导致这方面的一些问题。我测试了一下,似乎没有任何问题。
【讨论】:
shouldChangeCharactersInRange, IIRC。
你也可以改变字体...
如果您更改 Unicode 字符“BULLET”(U+2022),您可以自定义密码字符。 那里有很多免费的字体编辑器。 我用这个http://www.cr8software.net/typex.html
要为您的项目添加自定义字体,请查看 - this link
很简单
那么你就不必编写任何代码了。
【讨论】:
【讨论】:
简单地说,允许在 IB 中或通过程序保护财产。
【讨论】: