2015-12-08 25 views
6

Tôi muốn vô hiệu hóa Tự động sửa chữa trên tất cả các trường văn bản trong ứng dụng của tôi. Tôi biết về thuộc tính autocorrectionType trên UITextField. Tuy nhiên, tôi không phân lớp UITextField khi tôi bắt đầu phát triển ứng dụng của mình. Vì vậy, tôi đang tìm một giải pháp để vô hiệu hóa tự động sửa trên tất cả TextField của tôi với một dòng mã.Vô hiệu hóa tự động sửa chữa cho UITextField trong toàn bộ ứng dụng

tôi đã cố gắng sử dụng [UITextField appearance], mà làm việc cho sự xuất hiện bàn phím:

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark]; 

Nhưng không cho autocorrection, kể từ khi dòng mã sau đây:

[[UITextField appearance] setAutocorrectionType:UITextAutocorrectionTypeNo]; 

Kết quả trong một ngoại lệ mâu thuẫn:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Please file a radar on UIKit if you see this assertion.' 
+0

Câu hỏi thú vị. Có lẽ điều đó có liên quan nhiều hơn đến lớp textFieldDelegate hơn là textField. Bạn đã thêm lớp đó chưa? – lukaivicev

+0

Bạn có thể xây dựng được không? Không chắc chắn ý bạn là gì bằng cách thêm 'textFieldDelegate'. Tôi bắt đầu nghĩ rằng các thuộc tính autocorrection không được thực hiện trong proxy xuất hiện của 'UITextField', đó là một sự xấu hổ: /. Có lẽ tôi thực sự nên 'đặt một radar trên UIKit' như nó nói trong thông điệp ngoại lệ. – Hless

+0

https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/occ/intfp/UITextInputTraits/autocorrectionType kiểm tra xem cũng như các liên kết này: kiểm tra điều này: http://stackoverflow.com/questions/2474824/iphone-issue-disabling-auto-cap-autocorrect-on-a-uitextfield và http://stackoverflow.com/questions/827310/disable-auto- trường chỉnh sửa-of-iphone-text – lukaivicev

Trả lời

1

Tôi khuyên bạn nên đi với phân lớp UITextField:

@interface CustomTextField : UITextField 
@end 
@implementation CustomTextField 
- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     [self setAutocorrectionType:UITextAutocorrectionTypeNo]; 

     // same way add all the generalize properties which you require for all the textfields. 
    } 
return self; 
} 

Bây giờ sử dụng CustomTextField ở khắp nơi trên dự án của bạn (hoặc trong mã hoặc trong kịch bản).

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn câu trả lời. Tôi biết về subclassing, tôi đã thực sự tự hỏi tại sao oneliner sẽ không hoạt động (như nó với bàn phím xuất hiện). Subclassing chắc chắn không phải là giải pháp một dòng vì tôi sẽ cần phải thay thế tất cả các lần xuất hiện của UITextField. – Hless

+0

Điều này có thể là do thuộc tính 'AutocorrectionType' không được coi là một phần của' UIAppearance' (đơn giản là không phải là giao diện người dùng, nó nằm trong Trải nghiệm người dùng). Trong khi 'UIKeyboardAppearance' là' UI Appearance' có liên quan (hiển thị trên UI). – Mrunal

+0

nó có thể được thực hiện bằng cách sử dụng catagory? – AsimRazaKhan

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