У меня есть UITextField
(помещенный внутри UITableViewCell
), у которого есть UIButton
в качестве настраиваемого 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;
Когда отображается текстовое поле, касания не обрабатываются должным образом:
Ситуация ухудшается, если я перевожу устройство в альбомный режим. В этом случае область слева от кнопки, которая все еще запускает кнопку, шире, а слева от этой области есть пробел, который ничего не делает - кнопка не запускается, и текст не редактируется.В этой ситуации мне нужно сдвинуться значительно влево, чтобы отредактировать текст.
Это происходит только в том случае, если текущий текст в поле короткий. Если текст заполняет текстовое поле, касания обрабатываются должным образом (касания в любом месте слева от кнопки редактируют текст как в портретной, так и в альбомной ориентации).
Я попытался переопределить textRectForBounds
, editRectForBounds
и rightViewRectForBounds
. Я проверил, что они вызываются и возвращают правильные значения, но ничего не меняют (пока возвращаемые значения верны).
Есть идеи?