Создание представления тега программно в Cocoa Swift Macos - PullRequest
0 голосов
/ 18 марта 2019

Мне нужно скопировать всплывающее окно просмотра тегов, которое имеет искатель. [Вид тега Finder] https://i.stack.imgur.com/QCufn.png,, но с разницей, представление тегов должно быть внутри прокрутки с целью разрешения только 5 видимых теги

Я начал с NSTextView, но когда я добавляю кнопку в textView, текст всегда находится за тегами, то есть теги покрывают написанный текст. https://i.stack.imgur.com/eeJWy.png

Как я могу сделать что-то похожее на Finder?

Спасибо

EDIT

Я пытаюсь с NSTokenField, но что-то пошло не так, потому что просмотр прокрутки не прокручивается: https://i.stack.imgur.com/sweDN.png

Это мой код:

class SearchTagView:NSScrollView {


lazy var tokenizer: NSTokenField = {
    let tokenizer = NSTokenField(string: "")
    tokenizer.isEnabled = true
    tokenizer.isSelectable = true
    tokenizer.isEditable = true
    tokenizer.tokenStyle = NSTokenField.TokenStyle.squared
    tokenizer.font = NSFont(name: FontList.montserrat(weight: .medium).value, size: 13)
    tokenizer.textColor = .red
    tokenizer.cell?.image = nil
    tokenizer.cell?.wraps = true
    tokenizer.cell?.isScrollable = false
    tokenizer.usesSingleLineMode = false
    tokenizer.autoresizingMask = [.width, .height]
    return tokenizer
}()



override init(frame frameRect: NSRect) {
    super.init(frame: frameRect)
    translatesAutoresizingMaskIntoConstraints = false
    addSubview(tokenizer)
    tokenizer.translatesAutoresizingMaskIntoConstraints = false
    tokenizer.pinToSuperView()
}


override func viewDidMoveToSuperview() {
    super.viewDidMoveToSuperview()
    documentView = tokenizer
}


required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
* *} Тысяча двадцать-один

Примечание:

Вид прокрутки прикреплен к суперпредставлению в начале, в конце и сверху, и имеет высоту между 35 и 75 с ограничениями:

 NSLayoutConstraint.activate([
   searchTagView.topAnchor.constraint(equalTo: contentView.topAnchor),
            searchTagView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16),
            searchTagView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16),
            searchTagView.heightAnchor.constraint(greaterThanOrEqualToConstant:35),
            searchTagView.heightAnchor.constraint(lessThanOrEqualToConstant:70),
    ])
...