Как отключить редактирование UITextField, но все еще принимать касание? - PullRequest
98 голосов
/ 02 февраля 2012

Я делаю UITextField с UIPickerView как inputView.Все хорошо, за исключением того, что я могу редактировать, копировать, вставлять, вырезать и выделять текст, а я этого не хочу.Только сборщик должен изменять текстовое поле.

Я узнал, что я могу отключить редактирование, установив setEnabled или setUserInteractionEnabled в NO.Хорошо, но TextField перестает реагировать на прикосновения, а средство выбора не отображается.

Что я могу сделать, чтобы добиться этого?

Ответы [ 14 ]

0 голосов
/ 06 августа 2015

Это сработало для меня [textview setEditable:NO]; Приведенные выше ответы усложняют ситуацию.

0 голосов
/ 25 декабря 2013

Сделайте так, чтобы ваш inputView был представлен скрытым текстовым полем, которое также изменяет текст представленного и отключенного.

0 голосов
/ 06 августа 2013

Я использовал:

[self.textField setEnabled:NO];

и его работа отлично

0 голосов
/ 02 февраля 2012

Этот обходной путь работает. Поместите прозрачный UIView над текстовым полем и реализуйте следующий код:

- (void)viewDidLoad
{
 [super viewDidLoad];

   UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc]             initWithTarget:self action:@selector(longPress)];
[transparentView addGestureRecognizer:press];
 [press release];
  press = nil;
}

-(void)longPress
{
   txtField.userInteractionEnabled = NO;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   txtField.userInteractionEnabled = YES;
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
  [txtField becomeFirstResponder];
}
...