Подтвердить что ты не робот

Отключить мигающий курсор в UITextField?

Я выполнил инструкции здесь и успешно настроил UITextField, который обновляется с помощью UIDatePicker. Однако курсор в UITextField мигает, что кажется мне немного неудобным. Есть ли решение избавиться от этого курсора?

4b9b3361

Ответ 1

Я понимаю, что это старый вопрос, но с обновлениями для iOS 7 теперь можно скрыть курсор, выполнив следующие действия:

[[self textFieldName] setTintColor:[UIColor clearColor]];

Он работает только на iOS 7+.

Ответ 2

Подкласс UITextfield и переопределить метод - (CGRect)caretRectForPosition:(UITextPosition *)position и вернуть CGRectZero.

- (CGRect)caretRectForPosition:(UITextPosition *)position {
    return CGRectZero;
}

Ответ 3

Я надеюсь, что это поможет вам.

Установить курсор UIColor → Пусто.

 [[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"];

В Swift: 2.3

self.textField.valueForKey("textInputTraits")?.setValue(UIColor.clearColor() , forKey:"insertionPointColor")

Ответ 4

Я не мог заставить jcm-решение работать. То, что я закончил, заключалось в подклассе UILabel, чтобы имитировать интерактивную функциональность UITextField без частей, которые мне не нужны (например, курсора). Я написал здесь сообщение в блоге:

http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/

В принципе, подклассу UILabel необходимо перезаписать isUserInteractionEnabled, inputView, inputViewAccessory и canBecomeFirstResponder. Это всего лишь несколько строк кода, и это имеет смысл.

Ответ 5

Полностью глупый взломать, но если вы установите цвет оттенка текстового поля в разделе UIView инспектор свойств Interface Builder в соответствии с цветом фона, курсор будет невидимым:

uz5Tt.png

Ответ 6

Я сделал, чтобы наложить еще один UITextField поверх того, чей указатель я хотел скрыть. Затем в методе делегата textFieldShouldBeginEditing я установил другой textField, чтобы стать первым ответчиком и возвратил NO.

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (textField.tag==TAG_OF_DUMMY_TEXTFIELD) {
        [otherField becomeFirstResponder];
        return NO;
    }
    return YES;
}

И затем в методе, который выберет датаборщик:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@YOUR_DATE_FORMAT];
dummyField.text = [dateFormatter stringFromDate:datePicker.date];

В интерфейсе Builder otherField (тот, который имеет вид ввода datePicker) находится за dummyField (тот, который скрывает курсор).

Ответ 7

Не лучшее решение, но вы также можете установить непрозрачность цвета оттенка 0%.

введите описание изображения здесь

Ответ 8

Я нашел это решение самым легким в реализации.

Убедитесь, что вы определяете UITextFieldDelegate в файле .h:

.... UIViewController <UITextFieldDelegate>

В вашем .m файле добавьте это к методу, который вы вызываете для выбора даты:

[yourTextField resignFirstResponder];

Это предотвратит мигание текстового поля.

Ответ 9

Баладжи подход работает.

Я также использовал такие решения KVC много раз. Несмотря на то, что это кажется недокументированным, но оно работает. Честно говоря, вы не используете частные методы здесь - только кодирование ключевого значения, которое является законным.

Он сильно отличается от [addNewCategoryTextField textInputTraits].

P.S. Вчера мое приложение появилось в AppStore без каких-либо проблем с этим подходом. И это не первый случай, когда я использую KVC при изменении некоторых свойств только для чтения (например, navigatonBar) или личных ivars.

Ответ 10

Вы можете добавить свойство BOOL cursorless в UITextField в категории через связанные объекты.

@interface UITextField (Cursorless)

@property (nonatomic, assign) BOOL cursorless;

@end

Затем используйте метод swizzling для swizzle caretRectForPosition: с помощью метода, который переключает между CGRectZero и значением по умолчанию с помощью cursorless.

Это приводит к простому интерфейсу через категорию перехода. Это показано в следующих файлах.

Просто оставьте их и получите преимущество этого простого интерфейса

UITextField категория: https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.h https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.m

Метод Swizzling: https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.h https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.m