gpt4 book ai didi

ios - 自定义 UITextView 自动完成功能

转载 作者:行者123 更新时间:2023-11-29 05:45:58 32 4
gpt4 key购买 nike

我正在尝试为科学应用程序创建一个自定义自动完成字段(例如在搜索栏中),该应用程序允许将定义添加到 UITextView 中。这个过程会是这样的。

  1. 用户点击键盘附件中的按钮,按钮会在 UITextView 中添加一个“ block ”
  2. 在“ block ”中输入内容时,它会在下方显示一个 TableView?,其中包含元素周期表元素的建议。
  3. 通过单击 TableView 中的建议(或按 Enter 并选择第一个建议)选择元素后,会生成一个 block ,显示周期表元素名称和定义。我已经使用笔记应用程序 BEAR 快速模拟了我的想法。它具有类似的功能,只是没有最后一步: https://imgur.com/a/1RrcUkC

我对这方面的很多内容都是陌生的,所以提前感谢您对所有这些的命名约定的任何建议以及关于我如何实现这一目标的任何相关信息或解释。

最佳答案

这是实现它的简单方法。

我使用了名为 DropDown 的第三方库当特定单词添加到 UITextView 中时显示下拉列表。

import UIKit
import DropDown

class ViewController: UIViewController, UITextViewDelegate {

@IBOutlet weak var textView: UITextView!

let dropDown = DropDown()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

func textViewDidChange(_ textView: UITextView) {

if textView.text.last == "#" {

let endPosition: UITextPosition = textView.endOfDocument

//Get courser position to show dropdown
let rect = textView.caretRect(for: endPosition)

//Create a custom view to provide anchorView to DropDown
let customView = UIView(frame: CGRect(x: rect.origin.x, y: rect.origin.y, width: 200, height: 0))
textView.addSubview(customView)

dropDown.anchorView = customView // UIView or UIBarButtonItem

// The list of items to display. Can be changed dynamically
dropDown.dataSource = ["Car", "Motorcycle", "Truck"]

// Action triggered on selection
dropDown.selectionAction = { [unowned self] (index: Int, item: String) in
print("Selected item: \(item) at index: \(index)")
//remove Custom view as we no longer needed it.
customView.removeFromSuperview()

//Set your text accourding to selection from dropdown item.
textView.text = textView.text.dropLast() + " " + "\(item)"
}

dropDown.show()
}
}
}

我添加了注释以进行解释。

你的结果将是:

enter image description here

HERE是了解更多信息的演示项目。

关于ios - 自定义 UITextView 自动完成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148472/

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