UITextView: addGestureRecognizer и найдите тег textView - PullRequest
0 голосов
/ 10 марта 2019
override func viewDidLoad() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(findTag))
    textViews[i].addGestureRecognizer(tap)
}

var x : Int?

@objc func  findTag (textView : UITextView) {
    x = textView.tag
    print(x)
}

// why it does not work?

func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
    print(x)
    var itemA : UIDragItem?
    for textView in textViews {
        let itemProvider = NSItemProvider(object: textView.text as NSString)
        let item = UIDragItem(itemProvider: itemProvider)
        itemA = item
    }
    print("item")
    print(itemA)
    return [itemA!]
}

Я просто хочу выяснить, с каким текстовым представлением взаимодействует, поскольку перетаскиваемый элемент всегда возвращает последний элемент, как вы видите.

1 Ответ

0 голосов
/ 10 марта 2019

Я нашел решение с помощью методов session.location и hitTest.

func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
    let point = session.location(in: self.stackView)
    let n = stackView.hitTest(point, with: nil) as! UITextView
    let itemProvider = NSItemProvider(object: n.text as NSString)
    let item = UIDragItem(itemProvider: itemProvider)

    return [item]
}
...