2010-07-19 35 views

Trả lời

9

Giả sử Bobby B là đúng ở chỗ nó là không thể thay đổi nhân vật bí mật,
Tôi xin trình bày,
không có guarantuee nào và với tất cả các cảnh báo được áp dụng,
vì đây là một khủng khiếp kludge mà chắc chắn sẽ cung cấp cho bạn đau đầu ở một số điểm,
hy vọng không bị downvoted quá nhiều cho nó:

/* 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 */ 

Đặt đại biểu UITextField của bạn cho lớp chứa hàm này.

Chỉ cần đảm bảo bạn có self.backing được giữ lại NSString*. Bản sao & dán kludge là cần thiết để duy trì vị trí con trỏ.

Tôi không biết gì về dán, đây là một dự đoán hoang dã và nó hoạt động, nhưng bạn cần phải tìm hiểu xem điều này có thể dẫn đến một số vấn đề trong khía cạnh đó. Tôi đã thử nghiệm một chút và dường như không có vấn đề gì.

+0

Rất có khả năng không tự động và chắc chắn bàn phím quốc tế (đặc biệt, tự động chỉnh sửa dường như không gọi textField: shouldChangeCharactersInRange :). –

+2

Tôi nghĩ rằng tự động cho mục nhập an toàn là một ý tưởng tồi anyway ;-) và tôi nghĩ rằng nó gọi là 'shouldChangeCharactersInRange', IIRC từ một dự án với đầu vào có giới hạn chiều rộng pixel. – mvds

+0

cảm ơn. Đó có nên thay đổi nhân vật không? có vi phạm nguyên tắc UI UI không? – thndrkiss

0

Tôi không nghĩ rằng điều này là có thể và tôi dựa vào việc thiếu tài liệu được tìm thấy trong tài liệu cho UITextInputTraits (dành riêng cho secureTextEntry).

Có thể là sai mặc dù - quan tâm để nghe nếu ai đó đã làm điều này trước đây.

Chúc may mắn!

7

Bạn cũng có thể chỉ cần thay đổi font ...

Nếu bạn thay đổi các ký tự unicode 'BULLET' (U + 2022) bạn có thể tùy chỉnh nhân vật bí mật. Có rất nhiều trình soạn thảo phông chữ miễn phí trên mạng. tôi sử dụng này một http://www.cr8software.net/typex.html

Để thêm phông chữ tùy chỉnh để dự án của bạn, hãy kiểm tra - this link

Đó là khá dễ dàng

Sau đó, bạn không cần phải mã hóa bất cứ điều gì nó chỉ hoạt động.

0

Đơn giản, cho phép Thuộc tính an toàn trong IB hoặc qua chương trình.

Các vấn đề liên quan