gpt4 book ai didi

objective-c - 移动光标到位置 Objective-C

转载 作者:行者123 更新时间:2023-12-03 23:09:21 26 4
gpt4 key购买 nike

我有一个 UITextView 并且我想要两个按钮。当用户点击后退按钮时,我希望光标向后移动 1 个字符。当他们点击前进按钮时,光标应向前移动 1 个字符。我怎么能这样做?

最佳答案

我为您编写了它,引用了下面链接的答案。你可以把我写的代码丢到一个基础工程里试试看。

解决思路:

您可以通过指定要选择的文本范围以编程方式选择文本 block (请参阅引用资料)。你问什么是范围?它基本上是一个起始位置和一个长度。由于您只关心光标位置,因此可以忽略长度(即保持为零)并将“选择”的起始位置调整 +1 或 -1。

引用:

Can I select a specific block of text in a UITextField?

代码说明:

在下面的代码中,有两个按钮(前进和后退)和每个按钮的目标方法,用于更改 UITextView 中的光标位置。请注意,tv 是您的 UITextView 的类变量/属性(需要这样声明)。

代码:

- (void)viewDidLoad {
[super viewDidLoad];
UIButton *forward = [UIButton buttonWithType:UIButtonTypeRoundedRect];
forward.frame = CGRectMake(20, 20, 100, 50);
[forward setTitle:@"Forward" forState:UIControlStateNormal];
[forward addTarget:self action:@selector(moveForward:) forControlEvents:UIControlEventTouchUpInside];

UIButton *back = [UIButton buttonWithType:UIButtonTypeRoundedRect];
back.frame = CGRectMake(130, 20, 100, 50);
[back setTitle:@"Back" forState:UIControlStateNormal];
[back addTarget:self action:@selector(moveBack:) forControlEvents:UIControlEventTouchUpInside];

tv = [[UITextView alloc] initWithFrame:CGRectMake(20, 120, 280, 100)];
[self.view addSubview:forward];
[self.view addSubview:back];
[self.view addSubview:tv];
}


-(void)moveForward:(id)sender {
UITextRange *selectedRange = [tv selectedTextRange];
// Calculate the new position, - for left and + for right

if (tv.selectedRange.location < tv.text.length) {
UITextPosition *newPosition = [tv positionFromPosition:selectedRange.start offset:1];

UITextRange *newRange = [tv textRangeFromPosition:newPosition toPosition:newPosition];

// Set new range
[tv setSelectedTextRange:newRange];
}
}

-(void)moveBack:(id)sender {
UITextRange *selectedRange = [tv selectedTextRange];
// Calculate the new position, - for left and + for right

if (tv.selectedRange.location > 0) {
UITextPosition *newPosition = [tv positionFromPosition:selectedRange.start offset:-1];

UITextRange *newRange = [tv textRangeFromPosition:newPosition toPosition:newPosition];

// Set new range
[tv setSelectedTextRange:newRange];
}
}

关于objective-c - 移动光标到位置 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11276191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com