Предполагая, что Бобби Б прав в том, что невозможно изменить секретный символ,
Настоящим я представляю,
без каких-либо гарантий и со всеми применимыми предупреждениями,
, поскольку это ужасный клудж , который наверняка в какой-то момент вызовет у вас головную боль,
в надежде, что за него не проголосуют слишком сильно:
/* 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 для копирования и вставки был необходим для сохранения позиции курсора.
Я ничего не знаю о вставке, это было дикое предположение, и оно работает, но вам нужно выяснить, может ли это привести к некоторой проблеме в этомуважение.Я немного проверил, и это, похоже, не доставило никаких проблем.