2010-10-07 14 views

Odpowiedz

9

wystarczy uibutton i umieścić go na uitextview i ustawić jego działanie, aby uzyskać przejrzysty widok tekstu;

uitextview.frame = (0,0,320,416); 

uibutton.frame = (310,0,10,10); 
[uibutton setimage:@"cross.png" forcontrolstate:uicontrolstatenoraml]; 
[uibutton addTarget:self action:@selector(clearButtonSelected:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)clearButtonSelected{ 
    [email protected]""; 
} 

nadzieję chcesz usunąć tekst widoku tekstu po kliknięciu na przycisk przekroju powyżej pomóc jeśli nie rozumieją czym mogę wysłać właściwego programu do tego

+0

doskonały. Dzięki. – Abhinav

+3

napotkasz tę samą potrzebę, skąd wziąć ten cross.png? – tom

1

Nie ma nic wbudowanego jak na UITextField. Trzeba samemu dodać widok (prawdopodobnie UIButton) i umieścić go poprawnie, a także jakoś poprawnie obliczyć tekst. (I nie sądzę, że to drugie jest naprawdę możliwe.)

Może zamiast tego powinien wyświetlić pasek narzędzi nad klawiaturą (lub inputAccessoryView, jeśli kierujesz reklamy na wersję 3.2 lub nowszą), który zapewnia wyraźny przycisk.

0

Dla mnie zmiana .frame lub temu Właściwości .contentInset nie działa.

Dla mnie najlepszy wynik pochodzi z:

1) dodanie UIView do kontrolera, nadać mu zakręty i granicy naśladować UITextView.

self.viewTextBackground.layer.borderColor = [UIColor colorWithRed:171/255.0 green:171/255.0 blue:171/255.0 alpha:1.0].CGColor; 
self.viewTextBackground.layer.borderWidth = 1.0f; 
self.viewTextBackground.layer.cornerRadius = 9.0f; 

2) umieść UITextView na górze tego UIView. Umieść go tak, aby widoczne były granice podstawowego UIView.

3) dają narożniki okrągłe UITextView:

self.textNote.layer.cornerRadius = 9.0f; 

3), aby jego szerokość Fe. 30 pikseli mniej w porównaniu do podstawowego UIView. Masz teraz miejsce na wyraźny przycisk.

4) po prostu dodaj UIButton do kontrolera i umieść go w prawym górnym rogu ukrytego UIView.

5) zmień właściwości przycisków: ustaw typ na "niestandardowy" i ustaw jego obraz na szary krzyżyk.

6) wiążą działanie przycisku te wyczyścić UITextView

11

Na podstawie odpowiedzi z ghostrider bardziej dokładne i realizacji Data:

int kClearButtonWidth = 15; 
int kClearButtonHeight = kClearButtonWidth; 

//add the clear button 
self.clearButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButton.png"] forState:UIControlStateNormal]; 
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButtonPressed.png"] forState:UIControlStateHighlighted]; 

self.clearButton.frame = CGRectMake(0, 0, kClearButtonWidth, kClearButtonHeight); 
self.clearButton.center = CGPointMake(self.textView.frame.size.width - kClearButtonWidth , kClearButtonHeight); 

[self.clearButton addTarget:self action:@selector(clearTextView:) forControlEvents:UIControlEventTouchUpInside]; 

[self.textView addSubview:self.clearButton]; 

i sposobu

- (void)clearTextView:(id)sender{ 
    self.textView.text = @""; 
} 

Możesz użyć tych zdjęć dla dwóch stanów przycisku:

UITextFieldButton UITextFieldButtonPressed

+0

Doskonała odpowiedź, ale z oporem XCode 6 na korzystanie z AutoLayout, musiałem zrezygnować z tworzenia przycisku programowo, ponieważ musisz dodać ograniczenia, aby upewnić się, że pojawią się we właściwym miejscu. Ostatecznie dodałem UIButton bezpośrednio do Storyboard i dodałem tam ograniczenia. (Westchnienie ...) –

5

Z punktu widzenia produktu, jeśli masz zamiar mieć jasny przycisk, prawdopodobnie chcesz użyć UITextField zamiast UITextView i UITextField obsługuje natywnie wyraźny przycisk - ustawić właściwość clearButtonMode jako takie:

UITextField *textfield = ...; 
textfield.clearButtonMode = UITextFieldViewModeAlways; 

patrz obrazek:

enter image description here

Można użyć przycisku UITextFieldViewModeWhileEditing, aby wyświetlać tylko przycisk usuwania, gdy użytkownik aktywnie aktualizuje zawartość.

+0

Dzięki! Dokładnie to, czego potrzebowałem. – ninjudd

+5

(Westchnienie). Pytanie brzmiało, jak dodać przycisk Wyczyść do UITextView (nie UITextField) ... i który NIE posiada funkcji członkowskiej ClearButtonMode ... !! –

+0

@Mike Gledhill, właśnie zaktualizowałem odpowiedź, aby zaadresować twój komentarz, myślę, że dla czegoś jak wyczyszczenie 'UITextView' jesteś lepszy z czystym przyciskiem (to jest' UIButton'). Po prostu nie widzę, jak przycisk X-X-X działałby z wielowierszowymi widokami tekstu. – Zorayr

Powiązane problemy