2012-06-25 22 views
6

Myślę, że to dziwne, stworzyłem własną klasę, która dziedziczy z UIAlertView. W tej klasie dodam UITableView jako subview, a komórki zawierają UILabel i UITextField.UITextField: nie można wpisać tekstu, ale emotikony, kopiowanie/wklejanie i Backspace jest w porządku

klasa implementuje: UITableViewDelegate, UITableViewDataSource i UITextFieldDelegate,

W cellForRowAtIndexPath każdy cell.uiTxtField.delegate jest ustawiony na siebie.

dodaje się dzieje zarówno w symulatorze i na rzeczywistym urządzeniu iPhone:

  • Kiedy ustawić wskaźnik/palec w UITextField klawiatura wyskakuje i textFieldDidBeginEditing jest wyzwalany, że jest w porządku i zgodnie z oczekiwaniami.

  • Kiedy opuszczają UITextField, textFieldDidEndEditing jest wyzwalany, który jest również w porządku i zgodnie z oczekiwaniami.

  • Ale kiedy zacząć wpisywać tekst, kursor przestaje migać, ale nie jest wpisany tekst do UITextField.

  • mogę kopiowania i wklejania tekst przez przytrzymanie kursora/palec w UITextField, który zawiera tekst, wybierz Kopiuj, a następnie wkleić go w innym UITextField (lub ten sam).

  • Backspace backspace działa dobrze.

  • też niech mi wpisać symbole i emotikony itp

  • Jedyną rzeczą, nie mogę wpisać w to znaki/litery i cyfry

  • Przycisk powrotu nie spust textFieldShouldReturn

Od textFieldDi Wywoływane jest dBeginEditing i textFieldDidEndEditing Zakładam, że moja konfiguracja delegata jest w porządku, ale nie mogę zrozumieć, dlaczego nie mogę wpisać tekstu i dlaczego tekstFieldShouldReturn nie jest uruchamiany.

This może być pokrewny.

Każda pomoc jest doceniana.

+0

Mam ten sam problem .. nikt nie zna rozwiązania, pomóż mu – Anju

Odpowiedz

0

czy umieściłeś to w metodzie "init" swojej niestandardowej klasy?

spróbuj umieścić kod jak to w pliku implementacji ...

@implementation CustomAlertClass <UITextFieldDelegate> 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
    // 
    self.YourTextField.delegate = self; 
} 
return self; 
} 

@end 
0

Krótka odpowiedź: Upewnij się, że nie mam żadnego kodu, który zadziera z „Edycja” nieruchomości na UITextField.

miałem takie same objawy, gdzie byłem zdecydowanie ustawiania delegata prawidłowo i textFieldDidBeginEditing i textFieldDidEndEditing nazywano zaczyna, ale textFieldShouldReturn i shouldChangeCharactersInRange nie były nazywane coraz. Nie mogłem też wpisać żadnych znaków, ale mogłem skopiować tekst do pola tekstowego. W moim przypadku zdarzyło mi się również umieszczać pola tekstowe wewnątrz komórek w UITableView. Moja sytuacja wyglądała nieco inaczej, ponieważ przycisk usuwania nie działał.

Tam, gdzie popełniłem błąd, było to, że nie używałem surowego UITextField w moich komórkach, miałem własną podklasę UITextField. Moja podklasa miała właściwość "isEditing", którą modyfikowałem w metodach UITextFieldDelegate i wykorzystano do określenia sposobu przewijania widoku tabeli po wybraniu pola tekstowego. Było to przesłonięcie metody 'isEditing' na UITextField i jest używane jako getter dla właściwości edycyjnej UITextField. Gdy pozbyłem się mojej podklasy, właściwość "Wypisywanie" zachowała się zgodnie z oczekiwaniami.