SORU
11 Ocak 2009, Pazar


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
20 Kasım 2009, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009