Отключить увеличительное стекло в UITextField - PullRequest
6 голосов
/ 15 мая 2009

Есть ли способ запретить пользователю перемещать курсор в UITextField? Я бы хотел, чтобы он оставался в конце строки.

Ответы [ 5 ]

7 голосов
/ 16 мая 2013

Это старый вопрос, но я искал ответ на тот же вопрос и нашел решение.

На самом деле довольно просто запретить пользователю перемещать курсор. Просто создайте подкласс UITextField и предоставьте следующую реализацию caretRectForPosition:

- (CGRect)caretRectForPosition:(UITextPosition *)position
{
    return [super caretRectForPosition:self.endOfDocument];
}
4 голосов
/ 03 января 2018

Подкласс не требуется .

Вы можете использовать UITextFieldDelegate. Это сделает отключение лупы и выделения текста.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.userInteractionEnabled = NO;
    return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.userInteractionEnabled = YES;
}

Примечание: это просто обход.

1 голос
/ 21 октября 2011

Я бы предложил проверить свойство gestRecognizers .

Вы найдете их много в массиве и, возможно, захотите либо удалить их все, либо найти те, которые вызывают событие, которое вы хотите перехватить, и удалить / заменить его.

Я использовал его для удаления функций копирования / вставки и увеличительного стекла из UITextField

1 голос
/ 15 мая 2009

Нет способа предотвратить перемещение курсора. Однако вы можете запретить им редактировать текст, кроме как в конце, реализовав

– textField:shouldChangeCharactersInRange:replacementString:

метод в делегате вашего текстового поля.

Редактировать: вы также можете установить userInteractionEnabled на NO, чтобы пользователь не мог нажать на поле. Вызовите becomeFirstResponder вручную, чтобы поле получило фокус, поскольку пользователь не может нажать, чтобы сфокусироваться.

0 голосов
/ 18 августа 2010

Я не проверял, можно ли отключить увеличительное стекло, но рекомендуемый способ выборочного отключения поведения редактирования в UIResponder (и, следовательно, в UITextField) заключается в реализации canPerformAction:withSender из UIResponder.

См. Документация UIResponder .

Возможно, если вы вернете «НЕТ» для действия выбора и выберите «Все действия», вы можете отключить его.

Другой, более жестокий способ - перехватить любое событие касания и сбросить курсор до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...