是否可以更改显示的安全密码字符?
是否可以更改显示的安全密码字符?
假设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
的委托设置为包含此函数的类。NSString*
,即self.backing
。复制和粘贴的方法是为了保留光标位置。shouldChangeCharactersInRange
函数。 - mvds简单地说,可以通过IB或程序允许Secure属性。