У меня есть UITextField
(помещенный внутри UITableViewCell
), который имеет UIButton
как обычай rightView
:Ширина проблемы в UITextField с пользовательским 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
, editingRectForBounds
и rightViewRectForBounds
. Я проверил, что они вызываются и возвращают правильные значения, но они ничего не меняют (пока правильные значения верны).
Любые идеи?
Вы когда-нибудь решали эту проблему? В настоящее время у меня такая же проблема. – AnthonyM