当前位置: 首页 > 面试题库 >

在Swift中获取和设置UITextField和UITextView的光标位置

周墨一
2023-03-14
问题内容

我一直在尝试UITextField以及如何使用它的光标位置。

但是由于我正在使用Swift,所以我想学习如何获取当前光标位置以及如何在Swift中进行设置。

下面的答案是我从Objective-C进行实验和翻译的结果。


问题答案:

以下内容适用于UITextFieldUITextView

文本字段文本的最开始:

let startPosition: UITextPosition = textField.beginningOfDocument

文本字段文本的末尾:

let endPosition: UITextPosition = textField.endOfDocument

当前选择的范围:

let selectedRange: UITextRange? = textField.selectedTextRange

获取光标位置

if let selectedRange = textField.selectedTextRange {

    let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)

    print("\(cursorPosition)")
}

设定光标位置

为了设置位置,所有这些方法实际上都是使用相同的开始值和结束值来设置范围。

从头开始

let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)

到最后

let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)

在当前光标位置左侧的一个位置

// only if there is a currently selected range
if let selectedRange = textField.selectedTextRange {

    // and only if the new position is valid
    if let newPosition = textField.position(from: selectedRange.start, offset: -1) {

        // set the new position
        textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
    }
}

到任意位置

从头开始,向右移动5个字符。

let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {

    textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}

有关

选择所有文字

textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)

选择文字范围

// Range: 3 to 7
let startPosition = textField.position(from: textField.beginningOfDocument, offset: 3)
let endPosition = textField.position(from: textField.beginningOfDocument, offset: 7)

if startPosition != nil && endPosition != nil {
    textField.selectedTextRange = textField.textRange(from: startPosition!, to: endPosition!)
}

在当前光标位置插入文本

textField.insertText("Hello")

笔记

  • 使用textField.becomeFirstResponder()给予重点的文本字段,使键盘出现。


 类似资料:
  • 问题内容: 我想设置允许在a 和a中键入的最大字符数。然后,该数字将显示在一个小标签中(供用户参考,Twitter风格。) 问题答案: 更新 Swift 4.X 试试看:

  • 问题内容: 是否可以使用标准Python库在Windows中获取整体光标位置? 问题答案: 这将检索屏幕坐标中的光标位置-点=(x,y) 检索有关全局游标的信息。 链接: http://msdn.microsoft.com/zh-cn/library/ms648389(VS.85).aspx http://msdn.microsoft.com/zh-CN/library/ms648390(VS.8

  • 本文向大家介绍Javascript实现获取及设置光标位置的方法,包括了Javascript实现获取及设置光标位置的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Javascript实现获取及设置光标位置的方法。分享给大家供大家参考。具体如下: 在项目开发中经常遇到input等设置光标位置到最后的问题,今天我查了一下Google,找到了在IE、Firefox、Opera等主流浏览器的获

  • 我正在尝试突出显示由鼠标悬停的瓷砖。这是我的代码: 编辑: 光标对象不在鼠标下面,我如何修复和对齐它?

  • 问题内容: 我想从RichTextArea获取光标位置或位置。我不知道如何在没有任何鼠标事件的情况下获取当前光标位置。例如,TextArea具有方法getCursorPos(),但是RichTextArea没有诸如TextArea这样的方法。有人知道吗 请帮我… 提前致谢… 问题答案: 如果要在RichTextArea中的光标位置插入某些内容,可以使用格式化程序来完成: 要使用JavaScript

  • 我已经尝试在Objective-C中创建HTTP Get。 它使用中的,并使用选择或。 并通过以下代码设置标头: