UITextView selectedRange nie wyświetla się po ustawieniu programowym
Moim problemem jest programowe ustawienie wybranego zakresu UITextViewwybiera tekst, alenie wizualnie zaznacz, że jest wybrany. Czy to brzmi jak błąd w OS 3.0 / 3.1. Co ważniejsze, wszelkie rozwiązania lub sugestie dotyczące wyświetlenia wyboru? (przykładowy projekt połączony u dołu wiadomości)
Skąd mam wiedzieć, że jest wybrany, ponieważ nie otrzymuję informacji wizualnej? Dwa powody:
Brak migającego kursoraDotknięcie dowolnego klawisza na klawiaturze powoduje usunięcie istniejącego tekstu z zakresu wyboru.Mam UITextView w viewcontroller, który pozwala edytować wartość zmienioną przez użytkownika. Kontroler edytora jest otwierany po dwukrotnym dotknięciu w wierszu tabeli lub użytkownik naciska przycisk ujawniania szczegółów w wierszu. Viewcontroller dociera przez presentModalViewController, aw metodzie ViewWillAppear edytora VC inicjuję klawiaturę za pomocą[self.textView becomeFirstResponder];
Czasami chcę uruchomić edytor z całą zawartością wybranego widoku tekstowego, aby użytkownik mógł po prostu zacząć pisać, a to usunie istniejącą zawartość (to dlatego, że tworzę nowe elementy z domyślnymi tytułami, więc jest prawie pewne, że użytkownik najpierw usunie całą zawartość pola tekstowego edytora, a następnie wpisz ich tytuł).
Niektóre rzeczy, które już wypróbowałem:
ustawienie wybranego zakresu w viewDidAppear (zamiast i oprócz tego w textViewDidBeginEditing).Zastępując _textView.text kopią tekstu w nim zawartą, a następnie stosując selectedRange (w textViewDidBeginEditing) ... myśląc, że jeśli mam do czynienia z błędem framework, może się to obejść.[[_textView webView] selectAll];
(prywatny api). to samo zachowanie, tekst zostaje wybrany bez wizualnej informacji zwrotnej.wysyłanie _textView setNeedsDisplay i setNeedsLayout.używając performSelector ... afterDelay, aby ustawić selectedRange tak, aby stało się to po wyjściu z textViewDidBeginEditing.// UITextFieldDelegate Methods...
- (void)textViewDidBeginEditing:(UITextView *)_textView
{
NSInteger len = [_textView.text length];
if( self.selectInitialText ){
//NOTE: this is not working as expected. Indeed the text is
// selected but the highlighting of the text isn't showing.
_textView.selectedRange = NSMakeRange(0,len);
}
}
-- EDYTOWAĆ --
Oto przykładowy projekt przesłany do Apple BugReporter.Pobierz przykładowy projekt BugReport_7380723
Dodatkowe informacje:
Podczas tworzenia i zabawy z przykładowym zgłoszeniem projektu odkryłem dwie rzeczy:
Gdy zaznaczony jest tekst, ale nie wyświetla się podświetlenie, stuknij kilka klawiszy, a następnie „potrząśnij, aby cofnąć”, a oryginalny tekst zostanie przywróconyale jest podświetlony.
Jeśli ręcznie dokonasz wyboru w widoku tekstowym, a następnie dotkniesz przycisku „Wybierz wszystko” [odnosi się do przykładowego projektu połączonego powyżej], zaznaczony jest cały tekstI wyświetla prawidłowo podświetlenie.