2011-10-06 47 views
2

我無法爲文本字段的內容設置最大長度。我採用的過程是在我的頭文件中實現UITextFieldDelegate。然後我定義(然後調用)這種方法:故障設置文本字段的最大長度

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
NSUInteger newLength = [textField.text length] + [string length] - range.length; 
return (newLength > 5) ? NO : YES; 
} 

這是一種方法,我在網站上的建議。我也試過這樣:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
NSUInteger newLength = [zipCode.text length] + [string length] - range.length; 
return (newLength > 5) ? NO : YES; 
} 

「郵政編碼」是我連接到文本字段中的出口。每次我更改了代碼後,我都確保重新連接插座。我有一種感覺,那就是我錯過了一件非常簡單的事情。如果這是一個有點複雜的道歉,我有很多要學習!謝謝。

回答

0

試試這個:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    return (zipCode.text.length + string.length <= 5); 
} 

然後,在viewDidLoad方法:

- (void)viewDidLoad { 
    zipCode.delegate = self; 
    //..... 
    [super viewDidLoad]; 
} 
+0

嗯,仍然沒有工作。我應該以某種方式將它連接到我不知道的Interface Builder中嗎?或者,界面生成器可能會顯示這個問題?這是我嘗試過的第三種方法,當我分析它們時它們都有意義,但它們不起作用... – MillerMedia

+0

在視圖控制器的viewDidLoad方法中放入'zipCode.delegate = self;'。它可能沒有與IB連接,但可以用上面的行手動完成。 – chown

+0

太棒了。終於工作了,謝謝! – MillerMedia

相關問題