2013-03-14 16 views
6

Kullanıcının yalnızca veri girmesinin yanı sıra herhangi bir veri girmesini engellemek istiyorum. Yani temel olarak en azından bir boşluk olmayan bir karakter olmalı. Daha sonra kelimenin başındaki herhangi bir boşluğu kaldırmak istiyorum, bu yüzden ilk harf boşluk olmayan bir karakter.Amaç-c Metin üzerinde doğrulama nasıl yapılırFotoğraf

düzenlemek

kullanıcı şey girip gerekir o zaman ben bu boşlukları kırpmak istiyorum önce kullanıcı birkaç boşluk girerse. Ayrıca, kullanıcının sadece boşluk girmesini engellemek istiyorum.

kullanıcı girerseniz

Örnek gibi bir ad ve soyadı var "James Dean" Uzakta değil James ve Dean arasındaki ikinci boşluğu birinci boşluk almak istiyorum.

+1

[str stringByTrimmingCharactersInSet: <# (NSCharacterSet *) #>] –

+1

normal ifadeler için daha yoldayken –

+1

tam olarak bir alan olarak ilk harfini kalmaması olduğunu dize öyleyim girmek isteyen istediğini için? sağ? – Balu

cevap

15

sizin UIViewController Hedef UITextField 'ın delegate olmak ayarlayın ve bu yöntemi uygulamak: Eğer metin alanında yer önlemek istiyorsanız

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

    // verify the text field you wanna validate 
    if (textField == _nameTextField) { 

    // do not allow the first character to be space | do not allow more than one space 
    if ([string isEqualToString:@" "]) { 
     if (!textField.text.length) 
     return NO; 
     if ([[textField.text stringByReplacingCharactersInRange:range withString:string] rangeOfString:@" "].length) 
     return NO; 
    } 

    // allow backspace 
    if ([textField.text stringByReplacingCharactersInRange:range withString:string].length < textField.text.length) { 
     return YES; 
    } 

    // in case you need to limit the max number of characters 
    if ([textField.text stringByReplacingCharactersInRange:range withString:string].length > 30) { 
     return NO; 
    } 

    // limit the input to only the stuff in this character set, so no emoji or cirylic or any other insane characters 
    NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "]; 

    if ([string rangeOfCharacterFromSet:set].location == NSNotFound) { 
     return NO; 
    } 

    } 

    return YES; 
} 
+0

Parlak! Çok teşekkür ederim :) –

+0

Süper .. !! Günüm kaydedildi (Y) –

+0

DİKKAT: characterSetWithCharactersInString örneği, ingilizce dışındaki dillerde kullanılan harfleri içermez. Örneğin, Avrupalı ​​kullanıcılarınız varsa, üstlerindeki aksan işaretli harfler girebilirler. Bunları reddetmek muhtemelen İngilizce yerelleri dışında kabul edilemez. En azından, bu tür bir harfi "düz" sürümle değiştirin (işaretsiz harf). Bu gerçekten kabul edilebilir değil, fakat mektubu atmaktan daha az iğrenç. – ToolmakerSteve

1

İlk bölüm için size bir ipucu vereceğim.

NSString *tempname1 = [self.textField.text stringByReplacingOccurrencesOfString:@" " withString:@""]; 

BOOL thereAreJustSpaces = [tempname1 isEqualToString:@""]; 
+0

Teşekkürler Bu, kelimenin başındaki boşlukları kaldırmam gereken yere kadar çalıştım. – user1898829

0

, bu deneyin. Böyle

- (void)viewDidLoad 
{ 
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(checkSpace:) name:UITextFieldTextDidChangeNotification object:textfield]; 

} 
-(void)checkSpace:(NSNotification *)notification 
{ 

    str = [textfield.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ; 
textfield.text=str; 
} 
+0

Bu açıkça – Eugene

+0

hiçbir boşluk eklemenize izin vermeyeceğim Ne yapmak istediğime yakın. Ama eğer kullanıcı "James Dean" gibi bir isim ve soyadı girerse, ilk uzayı almak istiyorum ama James ile Dean arasındaki ikinci uzayı değil. [TxtUserName] seçeneğini kullanabilmeniz için – user1898829

+0

@ user1898829.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; – Kalpesh

5

deneyin size yardımcı olabilir, burada bir ilk harfi olarak boşluk olmayacak bu kod kullanıcıyı yerleştirerek kodum

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range 

    replacementString:(NSString *)string{ 
     if([text.text length]==0){ 
     if([string isEqualToString:@" "]){ 
      return NO; 
     } 
     } 
     return YES; 
    } 

ama ortada boşluk kabul dizenin

1
-(void)removeSpacesFromTextFields:(id) sender { 
    NSString *trim = [self.FNTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    if ([trim length] == 0) { 
     self.FNTextField.text = @""; 
    } 
} 
+0

Bence bu sana yardımcı olacak – Marking

İlgili konular