【问题标题】:Detect touch location in UIImage which is in a scrollview检测滚动视图中的 UIImage 中的触摸位置
【发布时间】:2015-05-06 21:49:20
【问题描述】:

我有以下 UI 层次结构:

UIView -> UIScrollView -> UIImageView

这是必要的,因为我想放大和缩小我的图像。到目前为止一切顺利,一切正常。现在我想检测图像的触摸位置。我已经阅读了很多,如果我在 UIView 中只有一个 UIImage,它就可以工作。不幸的是,对于第一个描述的层次结构,我需要它。

class TestController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var myImageView: UIImageView!
    @IBOutlet var myGestureRecognizer: UITapGestureRecognizer!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.myImageView.addGestureRecognizer(myGestureRecognizer)
        myImageView.userInteractionEnabled = true

    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        let touch = touches.anyObject()! as UITouch
        let location = touch.locationInView(self.myImageView)
        println(location)
    }

    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return self.myImageView
    }

    .....
}

我尝试将“myGestureRecognizer”添加到 UIView 以及 UIImageView 甚至所有 3 个(UIView、UIScrollView、UIImageView)。它只是对我不起作用,我不知道该怎么办。

如何检测 UIImageView 中的触摸位置(只需单击),它位于 UIScrollView 中?

提前致谢!

【问题讨论】:

    标签: ios swift uiscrollview uiimageview uitapgesturerecognizer


    【解决方案1】:
    func didTapImage(gesture: UIGestureRecognizer) {
        let point = gesture.locationInView(gesture.view)
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let imgView = UIImageView()
        imgView.userInteractionEnabled = true // IMPORTANT
        imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "didTapImage:"))
    }
    

    在 UIImageView 上,userInteractionEnabled 默认为 false,不会注册触摸。

    【讨论】:

    • 非常感谢,成功了!!!我启用了 useInteraction 但原因是我可能需要特殊功能来解决它​​。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多