ios - 无法在 UITextField 中移动光标

标签 ios uitextfield uikit

我有一个相当标准的用户界面,其中有一个文本字段嵌入在几个 subview 中。我遇到一个问题,在文本字段中输入内容后,我无法移动光标,它会不断地移回到输入的开头。

代码中的任何位置都不会调用任何方法来更改编辑位置,例如 setSelectedTextRange 或类似的方法。

请原谅 Objective-C,这是一个遗留代码库!

self.textField = [UITextField new];
self.textField.text = element.value;
self.textField.placeholder = element.placeholder;
self.textField.returnKeyType = UIReturnKeyNext;
self.textField.delegate = self;
self.textField.autocorrectionType = element.autocorrectionType;
self.textField.autocapitalizationType = element.autocapitalizationType;
self.textField.secureTextEntry = element.secureTextEntry;
self.textField.keyboardType = element.keyboardType;
[self.textField addTarget:self action:@selector(handleTextChange:) forControlEvents:UIControlEventEditingChanged];
[self addSubview:self.textField];
- (void)handleTextChange:(UITextField *)sender
{
    self.inputElement.value = sender.text;

    // If we're showing the validation warning, give real time feedback to user
    if (self.isShowingValidationWarning) {
        [self validate];
    }
}

- (void)validate
{
    BOOL isValid = self.inputElement.isValid;

    [self showValidationHint:!isValid animated:YES];
}

- (void)showValidationHint:(BOOL)show animated:(BOOL)animated
{
    self.isShowingValidationWarning = show;

    CGFloat duration = 0.0;

    if (animated) {
        duration = 0.2;
    }

    [UIView animateWithDuration:duration animations:^{

        if (show) {

            self.characterCountLabel.alpha = 0.0;
            self.validationButton.alpha = 1.0;
            self.validationButton.transform = CGAffineTransformMakeScale(1.0, 1.0);
        } else {

            self.characterCountLabel.alpha = 1.0;
            self.validationButton.alpha = 0.0;
            self.validationButton.transform = CGAffineTransformMakeScale(0.1, 0.1);
        }
    }];
}

inputElement.value 没有 setter 或 getter 函数,因此没有什么奇怪的事情发生!

最佳答案

这里的答案正是@juanreyesv 在评论中指出的! becomeFirstResponder 调用已移至 viewDidAppear 而不是 viewWillAppear,现在可以正常工作了!

关于ios - 无法在 UITextField 中移动光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415101/

相关文章:

ios - 在另一个 ViewController 中从一个 ViewController 控制 vars/IBOutlets

ios - 不要将 Realm 对象映射到 Realm 表中

ios - AVAudioPlayer 在某些设备上无法播放

iOS:文本未显示在旋转的 UITextField 内

iphone - 如何删除节的最后一行?

ios - UITableView 未正确提取 JSON

ios SWIFT - 如何在 UITextField 上启用水平滚动并在文本长于字段宽度时禁用截断 "..."

ios - 如何检查特定类型字符的 UITextField 值,例如字母还是数字?

iphone - 在iOS中,可以通过alloc和initWithFrame添加UIButton吗?

swift - 'InfoKey' 不是 'UIImagePickerController' 的成员类型