【发布时间】:2017-03-21 23:37:59
【问题描述】:
我的视图层次结构如下:
-
查看
- 查看用户的 Img + Emoji (A)
- 使用 UI 元素查看。 (B)
在 viewDidLoad 中,我为表情符号创建 UIImageViews,将它们添加到 A 并添加手势识别器(平移、捏合、旋转):
let emojiView = UIImageView(image: emoji)
emojiView.tag = n
emojiView.frame = CGRect(x: 153, y: 299, width: 70, height: 70)
emojiView.isUserInteractionEnabled = true
let pan = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(recognizer:)))
pan.delegate = self
emojiView.addGestureRecognizer(pan)
let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.handlePinch(recognizer:)))
pinch.delegate = self
emojiView.addGestureRecognizer(pinch)
let rotate = UIRotationGestureRecognizer(target: self, action: #selector(self.handleRotate(recognizer:)))
rotate.delegate = self
emojiView.addGestureRecognizer(rotate)
稍后,我声明 IBActions:
@IBAction func handlePan(recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: self.viewForImgAndEmoji)
if let view = recognizer.view {
view.center = CGPoint(x:view.center.x + translation.x,
y:view.center.y + translation.y)
}
recognizer.setTranslation(CGPoint.zero, in: self.viewForImgAndEmoji)
}
@IBAction func handlePinch(recognizer: UIPinchGestureRecognizer) {
let pinchPoint = recognizer.location(in: viewForImgAndEmoji)
let ourEmojiView = viewForImgAndEmoji.hitTest(pinchPoint, with: nil)
ourEmojiView!.transform = ourEmojiView!.transform.scaledBy(x: recognizer.scale, y: recognizer.scale)
recognizer.scale = 1
}
@IBAction func handleRotate(recognizer: UIRotationGestureRecognizer){
let rotatePoint = recognizer.location(in: viewForImgAndEmoji)
let ourEmojiView = viewForImgAndEmoji.hitTest(rotatePoint, with: nil)
ourEmojiView!.transform = ourEmojiView!.transform.rotated(by: recognizer.rotation)
recognizer.rotation = 0
}
问题:pan func 没有启动。旋转和捏合工作。但平移不是。 (因为它有按钮,所以不能禁用用户交互来覆盖视图)
【问题讨论】:
-
是否有可能得到一个带有代码的小演示项目?在这种情况下,使用复制场景的实际项目进行调试会更容易,因为(除非被忽略的一些简单的东西)其他视图可能会吞噬您的平移手势。或者,您可以尝试使用自己的单个视图(而不是多个叠加视图)复制场景,看看问题是否仍然存在......
-
github.com/flostik2008/Skirt 文件 EmojiVC.swift。谢谢。
-
现在看看。一旦我发现发生了什么,我会尽快回复您。
-
我发现了问题并添加了答案,但如果我不清楚发生了什么,请告诉我 - 我可能解释得不够清楚。
标签: ios swift swift3 uigesturerecognizer