mam UITextField
(umieszczony wewnątrz UITableViewCell
), który ma UIButton
jako zwyczaj rightView
:Szerokość problem w UITextField z niestandardowym rightView
UITextField *textField = [[[UITextField alloc] initWithFrame:CGRectMake(10.0, 1.0, cell.bounds.size.width - 20.0, 31.0)] autorelease];
textField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0.0, 0.0, 27.0, 31.0); // Probably not needed, doesn't change anything
button.frame = CGRectMake(0.0, 0.0, 27.0, 31.0);
[button setImage:[UIImage imageNamed:@"27x31.png"] forState:UIControlStateNormal];
textField.rightView = button;
textField.rightViewMode = UITextFieldViewModeUnlessEditing;
Gdy pole tekstowe jest widoczna, dotyka nie są obsługiwane zgodnie z oczekiwaniami :
- Po dotknięciu przycisku zostanie on uruchomiony.
- Po dotknięciu obszaru znajdującego się w pobliżu lewej krawędzi przycisku (ale poza jego granicami) przycisk jest nadal wyzwalany.
- Jeśli chcę edytować tekst w polu tekstowym, zamiast uruchamiać przycisk, muszę dotknąć przycisku dalej w lewo.
Sytuacja się pogarsza, gdy obrócę urządzenie do trybu poziomego. W takim przypadku obszar po lewej stronie przycisku, który nadal wyzwala przycisk, jest szerszy, a po lewej stronie jest odstęp, który nic nie robi - przycisk nie jest wyzwalany, a tekst nie jest edytowany. Muszę przesunąć znaczną część w lewo, aby edytować tekst w tej sytuacji.
Dzieje się tak tylko wtedy, gdy bieżący tekst w polu jest krótki. Jeśli tekst wypełnia pole tekstowe, dotknięcia są obsługiwane zgodnie z oczekiwaniami (dotyka dowolnego miejsca po lewej stronie przycisku, edytuj tekst zarówno w pionie, jak iw poziomie).
Próbowałem zastąpić textRectForBounds
, editingRectForBounds
i rightViewRectForBounds
. Zweryfikowałem, że są one wywoływane i zwracają poprawne wartości, ale one niczego nie zmieniają (o ile wartości zwracane są poprawne).
Wszelkie pomysły?
Czy kiedykolwiek rozwiązałeś ten problem? Obecnie mam ten sam problem. – AnthonyM