2010-07-18 55 views
11
[Number.editable = NO]; 
    [Number resignFirstResponder]; 
    [Password.editable = NO]; 
    [Password resignFirstResponder]; 

我收到錯誤集的UITextField非編輯 - 目標C

申請會員 '編輯' 的東西不是一個結構或聯合

:S

感謝

回答

27

首先,如果您不發送消息,則不需要[...]

Number.editable = NO; 
[Number resignFirstResponder]; 
Password.editable = NO; 
[Password resignFirstResponder]; 

但是,這不是錯誤的原因。 The .editable property僅爲UITextView定義,而不是UITextField。您應該爲UITextField設置the .enabled property(請注意,UITextField是UIControl)。

Number.enabled = NO; 
... 
+0

我意識到這一點,只是發表後改變但仍然不能正常工作:S – user393273 2010-07-18 10:17:08

+0

唉唉使用textviews XD感謝您的時間愚蠢的MEE IM – user393273 2010-07-18 10:19:57

18

此外,您可以使用委託方法。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    return NO; 
} 

那會做的伎倆,我更喜歡這種方法比設定textField.enabled = YES時,它很可能是應用程序的生命週期中進行編輯的能力將發生改變。

+0

的BlocksKit吊艙使這更容易: list.bk _shouldBeginEditingBlock =^BOOL(UITextField * field){return 0; return 0; }; – 2015-04-12 14:51:16

0

從shouldChangeCharactersInRange返回NO會是更好的選擇,因爲如果文本長度超過文本字段寬度,那麼上面的解決方案會給出問題,因爲用戶將無法看到所有文本(即超出文本字段寬度的文本隱藏)

5
textField.userInteractionEnabled = NO; 

希望這有助於..

+0

請注意,這將意味着用戶將無法長按也複製也 – mylogon 2017-01-24 02:58:03