在滚动视图中的 UIImage 中检测触摸位置
Detect touch location in UIImage which is in a scrollview
我有以下 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) 在一起。它对我不起作用,我不知道该怎么做。
如何检测位于 UIScrollView 中的 UIImageView 中的触摸位置(只需单击一下)?
提前致谢!
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,不会注册触摸。
我有以下 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) 在一起。它对我不起作用,我不知道该怎么做。
如何检测位于 UIScrollView 中的 UIImageView 中的触摸位置(只需单击一下)?
提前致谢!
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,不会注册触摸。