Bir UİTextField maksimum karakter uzunluğu ayarlayın
Nasıl ben UIView
yük zaman iPhone UITextField
SDK karakter maksimum miktarda ayarlayabilir miyim?
CEVAP
UİTextField sınıf hayır max length özelliği vardır, nispeten basit, bu işlevselliği metin alanı delegate
ayar ve aşağıdaki temsilci yöntemi uygulayarak elde etmek için:
Objective-C
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Prevent crashing undo bug – see note below.
if(range.length range.location > textField.text.length)
{
return NO;
}
NSUInteger newLength = [textField.text length] [string length] - range.length;
return newLength <= 25;
}
Swift
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (range.length range.location > count(textField.text) )
{
return false;
}
let newLength = count(textField.text) count(string) - range.length
return newLength <= 25
}
Metin alanı değişmeden önce, UİTextField belirtilen metin ise temsilci sorargerekirdeğiştirilemez. Metin alanı bu noktada değişmedi, mevcut boy ve eksi aralığı uzunluğu ekleme yapıyoruz dize uzunluğu alalım. Eğer bu değer çok uzun (örneğin en fazla 25 karakter), NO
değişim yasakla dönmek.
Yazı yazarken tek karakter sonunda bir metin alanı, range.location
olacak mevcut alanın uzunluğu ve range.length
0 olacaktır, çünkü değiliz değiştirme/silme bir şey. Bir metin alanı ortasına ekleme sadece ** 10, farklı ve yapıştırma çoklu bir karakter sadece string
birden fazla karakter var demektir.
Tek karakter silme veya birden fazla karakter kesme sıfır uzunluktadır range
ve boş bir dize tarafından belirtildi. Yerine sadece bir dizi boş olmayan bir dize ile silme.
Bu kaza hakkında bir not "Geri Al" hata
Açıklamalarda belirtildiği gibi, bir çökmesine neden olabilir UITextField
ile bir hata var.
Bu alana yapıştırın, ama yapıştır doğrulama uygulaması tarafından engellenir, yapıştırma işlemi de uygulamanın geri tampon kaydedilir. Sonra bir (cihaz sallayarak ve bir Geri onaylayarak) yangın geri almak, UITextField
dize değiştirmek için çalışacaktırdüşünüyorboş bir dize ile kendisi için yapıştırdım. Çünkü bu asla kaza olacakaslındadize kendisini yapıştırılan. Var olmayan bir dizenin bir bölümünü değiştirmeye çalışacağız.
Neyse ki bu gibi kendini öldürmekten UİTextField koruyabilirsiniz. Sadece aralığı değiştirmek için önermektedir emin olmak gerekiryokgeçerli dize içinde var. Bu ilk akıl sağlığını kontrol yukarıda yaptığı iştir.
SQL Server: nesne adları için Maksimum...
HTML kimliği için pratik bir maksimum ...
Bir sorgu dizesi mümkün olan maksimum ...
Neden 260 karakter yolu uzunluğu sınır...
Maksimum DB türü saklarken Uzunluğu Mİ...