Пан жест добавлен в поле зрения моего ViewController. Он должен обнаружить, какая ячейка collectionView i была использована, и переместить ее. Все работает хорошо, но иногда Pan Gesture поймал «начать» и «изменил» события и не поймал никаких конечных событий (нужно ловить «закончившееся» событие). Я попытался поймать все события, но когда я выхожу из пальцев - ничего не происходит. Жест Пан добавлен в Раскадровка и связан с действием.UI Pan Gesture не работает
Вот код моего действия:
//--------------\\
var translitionSensitivity : CGFloat = 1.0
let thresholdWhenSensitivityWillGrow : CGFloat = self.view.frame.width/4
let sensitivityMultiplier : CGFloat = 15
let animDuration = 0.4
//--------------\\
DispatchQueue.main.async {
let indexPath = self.getCellAtPoint(sender.location(in: self.view))
if indexPath == nil { return }
var cell = self.collectionView.cellForItem(at: indexPath!) as! DetailCardCollectionViewCell
if self.activeCell != nil { cell = self.activeCell } else {self.activeCell = cell}
let translation = sender.translation(in: self.collectionView)
var howMuchOffseted : CGFloat = 0.0
if sender.state == .began
{
self.lastTranslationPos = 0
}
if sender.state == .changed
{
if cell.mainViewTrailingConstraint.constant >= thresholdWhenSensitivityWillGrow
{
translitionSensitivity += (cell.mainViewTrailingConstraint.constant - thresholdWhenSensitivityWillGrow)/sensitivityMultiplier
}
else
{
translitionSensitivity = 1
}
howMuchOffseted = (self.lastTranslationPos - translation.x)/translitionSensitivity
self.lastTranslationPos = translation.x
cell.mainViewTrailingConstraint.constant += howMuchOffseted
}
if sender.state == .ended || sender.state == .cancelled || sender.state == .failed || sender.state == .possible || sender.state == .recognized
{
print("ended")
if cell.mainViewTrailingConstraint.constant > thresholdWhenSensitivityWillGrow/2
{
cell.mainViewTrailingConstraint.constant = thresholdWhenSensitivityWillGrow
UIView.animate(withDuration: animDuration, delay: 0.0, options: [.curveEaseOut], animations: {
cell.layoutIfNeeded()
}, completion: nil)
}
else
{
cell.mainViewTrailingConstraint.constant = 0
UIView.animate(withDuration: animDuration, delay: 0.0, options: [.curveEaseOut], animations: {
cell.layoutIfNeeded()
}, completion: nil)
}
self.activeCell = nil
}
}
«Жест жеста, добавленный в Раскадровка и связанный с действием» Добавлен в _what_? – matt
@matt, IBAction –
Вы не ответили на мой вопрос. Какой признак распознавания поворота добавлен _to_ «на раскадровке»? Предоставьте достаточную информацию для кого-то, кто ищет проблему, с которой вы сталкиваетесь. – matt