2010-03-31 140 views
2

我有一個UITextField,我希望對每個字符敲擊,第一個字符被刪除。所以我每次只在我的textField中有一個字符。此外,我希望它顯示控制檯日誌中的每一個水龍頭。刪除最後一個字符UITextField

我該怎麼做?

回答

2

您需要實現shouldChangeCharactersInRange方法在您的文本字段代表:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange: 
        (NSRange)range replacementString:(NSString *)string{ 
    textField.text = @""; 
    return YES; 
} 

您可能需要檢查的範圍和字符串值涵蓋所有可能的情況下(比如複製/粘貼操作)。該代碼只是將文本字段的值設置爲最後輸入的字符。

0

的UITextField從UIControl繼承,這樣你就可以使用目標 - 動作機制是UIControl類的一部分:

[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged]; 

在操作方法,你可以只用最後一個字符替換的UITextField的文字和在控制檯中記錄該字符。需要注意的是因爲改變的UITextField的文本將再次導致「updateTextField」的消息被髮送第二次的目標,你將需要某種機制來確定是否更新與否:

- (void)updateTextField { 
    if(updateTextField == YES) { 
     updateTextField = NO; 
     NSString *lastChar = [textField.text substringFromIndex:[textField.text length]]; 
     [textField setText:lastChar]; 
     NSLog(@"%@", lastChar); 
    } else { 
     updateTextField = YES; 
    } 
} 

或者類似的東西無論如何...

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

    if (textField.text.length > 8) { 
     return NO; 
    } 
    return YES; 

} 
相關問題