изменить символ безопасного пароля в UITextfield - PullRequest
8 голосов
/ 19 июля 2010

Можно ли изменить отображаемый символ безопасного пароля?

Ответы [ 4 ]

9 голосов
/ 19 июля 2010

Предполагая, что Бобби Б прав в том, что невозможно изменить секретный символ,
Настоящим я представляю,
без каких-либо гарантий и со всеми применимыми предупреждениями,
, поскольку это ужасный клудж , который наверняка в какой-то момент вызовет у вас головную боль,
в надежде, что за него не проголосуют слишком сильно:

/* 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*.Kludge для копирования и вставки был необходим для сохранения позиции курсора.

Я ничего не знаю о вставке, это было дикое предположение, и оно работает, но вам нужно выяснить, может ли это привести к некоторой проблеме в этомуважение.Я немного проверил, и это, похоже, не доставило никаких проблем.

8 голосов
/ 04 ноября 2013

Вы также можете просто изменить шрифт ...

Если вы измените символ Юникода 'BULLET' (U + 2022), вы можете настроить секретный символ.Существует множество бесплатных редакторов шрифтов.Я использую этот http://www.cr8software.net/typex.html

Для добавления пользовательских шрифтов в ваш проект, проверьте - эту ссылку

Это довольно просто

Тогда вы нене нужно ничего кодировать, это просто работает.

0 голосов
/ 13 ноября 2013

Просто разрешите свойство Secure в IB или через программу.

0 голосов
/ 19 июля 2010

Я не думаю, что это возможно, и я основываю это на недостатке документации, найденной в документации для UITextInputTraits (специально для secureTextEntry ).

Может быть и неправильно - интересно узнать, делал ли это кто-то раньше.

Удачи!

...