iOS TextView Prefix

Yaptığımız projelerin bazı noktalarında text girdilerine ön ek “prefix” koymak isteyebiliriz. Bu telefon kodu olabilir, “Sayın” gibi ifadeler de kullanabiliriz. Kullandığımız bu ön eklerin silinmemesi için “UITextField” sınıfının “UITextViewDelegate” delege methodlarından olan “textView:shouldChangeTextInRange:replacementText” methodunu kullanarak yapabiliriz.

Yapmamız gereken ilk olarak önceki metin ile sonraki metinleri birleştirmek. Daha sonra bu birleşimi bir NSString değişkeni içerisinde tutup daha sonra if-else koşulu ile eklediğimiz ön ek metin değerin uzunluğunu kontrol edip eğer birleştirilen metin belirtiğimiz ön ek metinin uzunluğundan küçük ise ön ekimizin silinmesini engelliyoruz. Bunu aşağıdaki kod ile yapabilirsiniz;

Prefix “Ön Ek” değerimiz

static NSString *const PREFIX_TEXT = @"Merhaba, ";

TextView’ımıza ekleceğimiz ön eki giriyoruz.

myTextView.text = PREFIX_TEXT;

Daha sonra delege metodumuzla kontrolleri sağlıyoruz.



- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    
    // Eski text değeriyle yenisini birleştiriyoruz...
    NSString *combinedText = [textView.text stringByReplacingCharactersInRange:range withString:text];
    
    // Eğer kullanıcı 4. karakterlerden sonraki karakterleri silmek istiyorsa bir prefix oluşturuyoruz
    // daha sonra text'in başına ön ek koyuyoruz.
    if(combinedText.length < 4) {
        textView.text = PREFIX_TEXT;
        return NO;
    }
    else if(![[textView.text substringToIndex:4] isEqualToString:[combinedText substringToIndex:4]]) {
        return NO;
    }
    
    return YES;
    
}
Advertisements