首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置UITextField的自定义光标位置?

如何设置UITextField的自定义光标位置?
EN

Stack Overflow用户
提问于 2015-09-16 06:36:56
回答 3查看 1.7K关注 0票数 0

当用户单击UITextFiled时,光标处于起点,出于设计目的,它看起来不太好。因此,我想改变光标+5的位置或从UITextField的中心。

I实现了这段代码,这段代码是从Github那里找到的,但是它不起作用。如果你能指导我如何解决这个问题,请帮助我。

我的代码在下面

代码语言:javascript
复制
#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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-16 07:14:30

与其移动游标,您可以在UITextFiled的左边添加如下的填充,以使设计看起来更好

代码语言:javascript
复制
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 20)];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
票数 2
EN

Stack Overflow用户

发布于 2015-09-16 09:24:33

如果您希望在用户选择UITextField时具有自定义的游标位置,则需要注册用户选择UITextField时发布的通知。

因此,您可以通过以下方式将自己添加为观察者(例如,在viewDidLoad方法中):

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldSelected) name:UITextFieldTextDidBeginEditingNotification object:nil];

然后在textFieldSelected方法中可以:

代码语言:javascript
复制
- (void)textFieldSelected {
    [self.nameTextField setSelectedRange:NSMakeRange(5,0)];
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-30 12:08:44

出于设计目的,您可以将图像放在UITextview后面,并将textview置于UIImage视图之上。它看起来很适合设计

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32601324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档