Touchesmoved - обновление нескольких элементов одним движением
Я пытаюсь обновить несколько изображений после нажатия и перетаскивания элементов. Я реализовал прикосновения, начал, коснулся и прикоснулся, но я не знаю, как заставить прикосновения влиять на несколько изображений.
Я обыскивал в Интернете, но я не смог найти никаких руководств по этому вопросу. Если бы вы могли указать мне правильное направление или дать мне какой-то базовый совет, это было бы очень признательно.
Ниже приведен пример изображения:
Изменить: ниже приведен пример изображения того, что должно быть возможно:
Я хотел бы иметь возможность воздействовать на другие буквы таким же образом через ту же прессу, меняя их изображения. Эти картинки являются временными.
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("touches began:\(touches)")
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.image = UIImage(named: "slot")!
print("touches moved:\(touches)")
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.image = UIImage(named: "tile")!
print("touches ended")
}
1 ответ
Если я вас правильно понял, это должно быть примерно так:
class ChangableView: UIView {
private var touchedImageView: UIImageView? {
didSet {
if oldValue == touchedImageView { return }
if let oldValue = oldValue {
oldValue.image = UIImage(named: "tile")!
}
if let newValue = touchedImageView {
newValue.image = UIImage(named: "slot")!
}
}
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard let touch = touches.first else { return }
updateTouchedImageViewWithTouch(touch, event: event)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard let touch = touches.first else { return }
updateTouchedImageViewWithTouch(touch, event: event)
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
touchedImageView = nil
}
}
private extension ChangableView {
func updateTouchedImageViewWithTouch(touch: UITouch, event: UIEvent?) {
let touchPoint = touch.locationInView(self)
let touchedView = self.hitTest(touchPoint, withEvent: event)
touchedImageView = touchedView as? UIImageView
}
}
Кроме того, ваш UIViewController должен иметь в качестве представления подкласс ChangableView и не забывать устанавливать свойство userInteractionEnabled для всех UIImageViews в YES.