2011-12-02 16 views
5

dodaję pole tekstowe do mnie tak:UITextField tekst nachodzi przycisk Wyczyść

UITextField* tf_email = [[UITextField alloc] initWithFrame:CGRectMake((320-btnImage1.size.width)/2, 170, 175, 35)]; 
    [tf_email setBackgroundColor:[UIColor clearColor]]; 
    [tf_email setBorderStyle:UITextBorderStyleRoundedRect]; 
    [tf_email setClearButtonMode:UITextFieldViewModeWhileEditing]; 
    [tf_email setReturnKeyType:UIReturnKeyDone]; 
    [tf_email setAutocapitalizationType:UITextAutocapitalizationTypeNone]; 
    [tf_email setEnablesReturnKeyAutomatically:NO]; 
    [tf_email setDelegate:self];  
    [tf_email setOpaque:YES]; 
    tf_email.tag=1; 
    tf_email.font = TTSTYLEVAR(font); 
    tf_email.layer.cornerRadius = 10; 
    tf_email.keyboardType = UIKeyboardTypeEmailAddress; 
    [tf_email setAutocorrectionType:UITextAutocorrectionTypeNo]; 
    tf_email.placeholder = @"[email protected]"; 
    [self.view addSubview:tf_email]; 

Kiedy wprowadzić długi tekst do tego pola, tekst i jasny przycisk zachodzi. Czy ktoś wie, jak to naprawić?

+0

spróbować użyć standardowej czcionki i zobaczyć rezultat. – beryllium

+0

Nie ma znaczenia. –

Odpowiedz

3

Pomyślałem, co było problemem. W innym pliku miałem kategorię zdefiniowaną dla UITextField. Ta kategoria określiła obszar tekstu bardzo blisko lewej i prawej krawędzi. To powodowało nakładanie się.

Lekcja: przy definiowaniu kategorii powinniśmy używać oddzielnych plików, aby modyfikacje były łatwe do wykrycia.

+0

Uratujesz mój dzień ... –

1

[button bringSubviewToFront:self.view];

afert dodanie textfield ..

+0

Który widok muszę zabrać na wierzch? –

+0

Widok ClearButton oznacza widok pokryty warstwą Textfield ... – Developer

+0

Zobacz aplikację App Store na iPadzie. Ma przycisk wyszukiwania, w którym tekst i przycisk "Usuń" nie kolidują. W takim przypadku nie byłoby potrzeby przedstawiania jednego spojrzenia na drugim. –

12

utworzyć podklasę UITextField i zastąpić sposobami podanymi poniżej,

/*< Place holder position >*/ 
- (CGRect)textRectForBounds:(CGRect)bounds { 

    bounds.size.width = bounds.size.width - 20.0f; 
    return bounds; 
} 

/*< Text Posiotion >*/ 
- (CGRect)editingRectForBounds:(CGRect)bounds { 

    bounds.size.width = bounds.size.width - 20.0f; 
    return bounds; 
} 

Cheers !!!

3

@Augustine P A myślę, że lepszym rozwiązaniem jest wywołanie SUPER zmodyfikować wynik tak:

-(CGRect) textRectForBounds:(CGRect)bounds 
{ 
    CGRect rect = [super textRectForBounds:bounds]; 
    rect.size.width = rect.size.width - 20.0f; 
    return rect; 
} 

-(CGRect) editingRectForBounds:(CGRect)bounds 
{ 
    CGRect rect = [super editingRectForBounds:bounds]; 
    rect.size.width = rect.size.width - 20.0f; 
    return rect; 
} 
Powiązane problemy