2015-09-16 3 views
1

Когда пользователь нажимает на UITextFiled, курсор находится в начальной точке, для целей дизайна он выглядит не очень хорошо. Итак, я хочу изменить положение курсора +5 или из центра UITextField.Как установить пользовательскую позицию курсора UITextField?

Я реализовал этот код из Github, Stil его не работает. Пожалуйста, помогите мне, если вы можете посоветовать мне, как решить эту проблему.

Мой код ниже

#import "UITextField+Selection.h" 

@implementation UITextField (Selection) 

- (NSRange)selectedRange 
{ 
    UITextPosition* beginning = self.beginningOfDocument; 
    UITextRange* selectedRange = self.selectedTextRange; 
    UITextPosition* selectionStart = selectedRange.start; 
    UITextPosition* selectionEnd = selectedRange.end; 
    NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart]; 
    NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd]; 
    return NSMakeRange(location, length); 
} 
- (void)setSelectedRange:(NSRange)range 
{ 
    UITextPosition* beginning = self.beginningOfDocument; 
    UITextPosition* startPosition = [self positionFromPosition:beginning offset:range.location]; 
    UITextPosition* endPosition = [self positionFromPosition:beginning offset:range.location + range.length]; 
    UITextRange* selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition]; 
    [self setSelectedTextRange:selectionRange]; 
} 

#import "UITextField+Selection.h" 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    [self.nameTextField setSelectedRange:NSMakeRange(5,0)]; // Category method called 
} 
@end 
+0

Как работает код выше? –

ответ

2

Вместо перемещения курсора вы можете добавить отступ слева от UITextFiled, как это для дизайна, чтобы выглядеть лучше

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 20)]; 
textField.leftView = paddingView; 
textField.leftViewMode = UITextFieldViewModeAlways; 
1

Если вы хотите иметь пользовательское положение курсора, когда пользователь выбирает UITextField, вам необходимо зарегистрироваться для уведомления, которое публикуется, когда пользователь выбирает UITextField.

Таким образом, вы можете добавить себя в качестве наблюдателя (например, в viewDidLoad метода) с помощью:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldSelected) name:UITextFieldTextDidBeginEditingNotification object:nil]; 

И тогда в textFieldSelected методе вы можете:

- (void)textFieldSelected { 
    [self.nameTextField setSelectedRange:NSMakeRange(5,0)]; 
} 
0

Для проектирования цели, Вы можете поместить изображение за UITextview, и поместите текст над представлением UIImage. Это будет хорошо выглядеть для дизайна

Смежные вопросы