Ho un UITextField
(collocato all'interno di un UITableViewCell
) che ha un UIButton
come un costume rightView
:problema Larghezza in un UITextField con rightView personalizzato
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;
Quando il campo di testo viene visualizzato, tocchi non vengono gestiti come previsto :
- Se tocco il pulsante, viene attivato.
- Se tocco un'area vicino al bordo sinistro del pulsante (ma al di fuori dei suoi limiti), il pulsante è ancora attivato.
- Se voglio modificare il testo nel campo di testo anziché attivare il pulsante, devo toccare ulteriormente a sinistra.
Le cose peggiorano se si ruota il dispositivo in modalità orizzontale. In questo caso, l'area a sinistra del pulsante che attiva ancora il pulsante è più ampia, e c'è una lacuna alla sinistra di quest'area che non fa nulla: il pulsante non viene attivato e il testo non viene modificato. Devo spostare un considerevole modo a sinistra per modificare il testo in questa situazione.
Questo succede solo se il testo corrente nel campo è breve. Se il testo riempie il campo di testo, i tocchi vengono gestiti come previsto (tocca qualsiasi parte a sinistra del pulsante modifica il testo sia in verticale che in orizzontale).
Ho provato a ignorare textRectForBounds
, editingRectForBounds
e rightViewRectForBounds
. Ho verificato che vengano chiamati e restituiscano i valori corretti, ma non cambiano nulla (purché i valori di ritorno siano corretti).
Qualche idea?
Hai mai risolto questo problema? Sto avendo lo stesso problema al momento. – AnthonyM