假設您有2個文本字段實例變量連接到您在Interface Builder中創建的文本字段。讓我們叫他們myReadOnlyTextField
和myEditableTextField
。確保將Interface Builder中每個文本字段的delegate
屬性連接到視圖控制器(「文件所有者」)[1]。現在,在視圖控制器@implementation
(.m文件)中,使用方法textFieldShouldBeginEditing:
,並放入一些邏輯來確定要允許編輯哪個文本字段,哪些不允許編輯;是這樣的:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
BOOL editable;
if (textField == myReadOnlyTextField) {
editable = NO;
} else if (textField == myEditableTextField) {
editable = YES;
} else {
// editable = YES/NO/Other Logic
}
return editable;
}
從UITextFieldDelegate
Documentation:
textFieldShouldBeginEditing:
問代表是否應編輯在指定文本字段開始 。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
參數
textField
- 爲其編輯即將 開始的文本字段。
返回值
YES
如果一個編輯會話,應啓動; 否則,NO
禁止編輯。
討論
當用戶執行通常會 啓動編輯會話的行爲,該文本字段調用此方法首先 看看編輯實際上應該繼續進行。在大多數情況下, 只會從此方法返回YES以允許編輯繼續。
委託實現此方法是可選的。如果不存在 ,則繼續進行編輯,就好像此方法返回YES一樣。
UITextField
Documentation是一個很好的閱讀也。
[1]你可以做到這一點編程爲好。這裏是一個例子:
- (void)viewDidLoad {
[super viewDidLoad];
// .....
myReadOnlyTextField.delegate = self;
myEditableTextField.delegate = self;
}
爲所有'不可編輯的'textFields分配一個通用標記值並在'textFieldDidBeginEditing'方法上檢查它並輕鬆返回BOOL是很容易的。 – Gokul