【问题标题】:Get the location (coordinates) of a touch inside a scroll view in swift快速获取滚动视图中触摸的位置(坐标)
【发布时间】:2015-09-05 09:32:22
【问题描述】:

我正在处理 UIScrollView 中的 UIImageView,UIImageView 可以通过 UIScrollView 进行缩放,但我的目标是获取一个点的坐标,这样每当用户在缩放时触摸 UIImageView 时,该点就会“固定”到UIImageView,然后在未缩放时(因此当缩放比例为 1.0 时),坐标将被保存。

我能够获取图片,将其放入 ScrollView 中的 ImageView 中,然后使图片可缩放,但每当我触摸 scrollView 时,都不会显示坐标。

这是我的代码:

    override func viewDidLoad() {
    super.viewDidLoad()

    self.scrollview.minimumZoomScale = 0.5
    self.scrollview.maximumZoomScale = 6.0
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func ChooseExisting(sender: AnyObject) {

    let picker = UIImagePickerController()

    picker.delegate = self
    picker.sourceType = .PhotoLibrary

    presentViewController(picker, animated: true, completion: nil)


}

@IBAction func Camera(sender: AnyObject) {
    let picker = UIImagePickerController()

    picker.delegate = self
    picker.sourceType = .Camera

    presentViewController(picker, animated: true, completion: nil)



}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    ChosenImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    dismissViewControllerAnimated(true, completion: nil)
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
    return self.ChosenImage
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: (UIEvent!)) {
    if let touch = touches.first as? UITouch {
        let location = touch.locationInView(self.ChosenImage)

        println("\(location)")
    }
}

println 只返回 ScrollView 以外任何地方的触摸值

【问题讨论】:

  • 确保设置 UIImageview 的 userInteractionEnabled = true
  • 你应该使用手势。向 UIImageView 添加手势

标签: ios swift uiscrollview coordinates pinchzoom


【解决方案1】:

UIGestureRecognizer 添加到您的UIImageView 并将userInteractionEnabled 设置为true

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
imgViewClickTest.addGestureRecognizer(tapGestureRecognizer)
imgViewClickTest.userInteractionEnabled = true

然后处理水龙头

func imageTapped(recognizer : UIGestureRecognizer) {
    let tappedPoint: CGPoint = recognizer.locationInView(self.view!)
    let x: CGFloat = tappedPoint.x
    let y: CGFloat = tappedPoint.y

    print(tappedPoint)
    print(x)
    print(y)
}

【讨论】:

    【解决方案2】:

    UIGestureRecognizer 添加到您的UIImageView 应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多