2013-07-24 56 views
0

我想保留UITextField中的某些文本不可編輯。例如,我想保留諸如「.com」之類的東西,在此「.com」之前預先輸入用戶的輸入。如何防止編輯UITextField中的部分文本

+0

這可以幫助你: http://stackoverflow.com/questions/9248340/can-i-place-noneditable-text-in-uitextfield – RKY

+0

使用IBAction爲文本字段連接到一個方法改變。當它被觸發時,根據需要更改文本。 – Sandeep

回答

2

嘗試使用這種方法

(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

而且使用的東西像這樣,所以當用戶試圖編輯最後三個字符時,它將返回NO:

if (string.length < 3) { 
    NSLog(@"NO -> string.length < 3"); 
    return NO; 
} 
if (range.location > textField.text.length-3) { 
    NSLog(@"NO"); 
    return NO; 
} 
return YES; 
+1

這將無法正常工作。如果用戶選擇「com」部分,然後點擊刪除,那麼將調用「shouldChangeCharacters ...」委託方法,其長度爲零。你的第一個'if'檢查將會看到這個返回'YES',這意味着所選的「com」將被刪除。與所期望的相反。 – rmaddy

+0

我想這是對的,但這只是他想如何工作而已。無論如何,我爲它製作了一個版本,現在它可能更少錯誤...... –

0

記錄每個字符的變化。如果編輯了「.com」的任何部分,則以編程方式恢復它。請務必向用戶提供「.com」不可編輯的指示。

0

當用戶返回的UITextField做到這一點:

NSString *oldString = yourTextField.text; 
NSString *newString = [oldString stringByAppendingString:@".com"]; 
yourTextField.text = newString; 
0

你可以這樣做有以下兩種方式:

NSString *suffixStr = @".com"; 
1. 
NSString *newStr = [yourStr stringByAppendingString:suffixStr]; 
2. 
NSString *newStr = [NSString stringWithFormat:@"%@%@", yourStr, suffixStr]; 
相關問題