UITapGesture не работает на XIB-файле в представлении стека - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть контроллер с этими элементами

enter image description here

В режиме стека я динамически добавляю один или несколько файлов XIB в виде UiView, это мой файл XIBКод:

class PassengerInfoItem: UIView {
@IBOutlet weak var View_Content: UIView!
@IBOutlet weak var Label_AddPassenger: UILabel!


override init(frame: CGRect)
{
    super.init(frame: frame)
    self.commenInit()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.commenInit()
}

func commenInit()
{
    Bundle.main.loadNibNamed("PassengerInfoItem", owner: self, options: nil)
    self.View_Content.frame = self.bounds
    self.View_Content.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    addSubview(self.View_Content)
}}

и это код моего контроллера:

for i in 1...(UserSearchModel.Passengers.AdultNumber)!
    {
        let passengerInfoItem = PassengerInfoItem()
        passengerInfoItem.tag = i
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTapGesture_PassengerInfo))
        tapGestureRecognizer.delegate = self
        passengerInfoItem.addGestureRecognizer(tapGestureRecognizer)
        self.StackView_AddPassengerInfo.addArrangedSubview(passengerInfoItem)
    }

В представлении стека все passengerInfoItem успешно добавлены, но при прикосновении к одному из них ничего не происходит, и моя проблема - UITapGestureRecognizer не работаютправильно, я проверил все isUserInteractionEnabled = true для просмотра сзади, просмотра прокрутки, карты, просмотра стека, но UITapGesture не работает

1 Ответ

0 голосов
/ 26 декабря 2018

Поскольку вы добавляете сюда еще один экземпляр

 Bundle.main.loadNibNamed("PassengerInfoItem", owner: self, options: nil)
self.View_Content.frame = self.bounds
self.View_Content.autoresizingMask = [.flexibleHeight, .flexibleWidth]
addSubview(self.View_Content)

, чтобы жест применялся к самому заднему представлению, вам может потребоваться

class func getInstance() ->  PassengerInfoItem {
   let vv =  Bundle.main.loadNibNamed("PassengerInfoItem", owner: self, options: nil)?.first! as!  PassengerInfoItem
   return vv
}

Затем заменить

let passengerInfoItem = PassengerInfoItem()

с

let passengerInfoItem = PassengerInfoItem.getInstance()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...