【问题标题】:Gesture Recognizer Value Reset手势识别器值重置
【发布时间】:2018-02-24 22:12:23
【问题描述】:

我有一个带有简单图像的视图,其中添加了旋转和捏合手势识别器(从对象库添加)。我使用 2 条基本的简单线条和 2 条 IBAction 来旋转和缩放图像。一切正常,但问题是:每个手势都会重置另一个值。如果我旋转图像并且在我捏合之后,旋转值恢复正常,反之亦然。我想保留旋转和缩放的值。我希望是清楚的问题。谢谢大家。这里是代码:

//  ImageController.swift
//  SpImage
//
//  Created by Ronny Westwood on 06/09/17.
//  Copyright © 2017 RW2017. All rights reserved.
//

import UIKit

class ImageController: UIViewController {

    @IBOutlet weak var Image: UIImageView!

/// IMAGE OUTLET

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

    @IBAction func rotationImage(_ sender: UIRotationGestureRecognizer) {
        Image.transform = view.transform.rotated(by: sender.rotation)
    }

    @IBAction func zoomImage(_ sender: UIPinchGestureRecognizer) {
        Image.transform = CGAffineTransform(scaleX: sender.scale, y: sender.scale)
    }

/// IMAGE ROTATION & IMAGE ZOOM

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

这里是视图: View

【问题讨论】:

  • 请尝试 'requireGestureRecognizerToFail' 例如如下 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]init]; UIPinchGestureRecognizer *pin = [[UIPinchGestureRecognizer alloc]init]; [点击 requireGestureRecognizerToFail:pin];
  • 首先,你应该包含你已经拥有的代码..
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。最小的、完整的、可验证的例子在这里适用。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
  • 你好 Gagan,是一回事:func shouldBeRequiredToFail(by: UIGestureRecognizer) 因为在你的例子中我收到很多错误..

标签: ios swift3 xcode8 uigesturerecognizer


【解决方案1】:

我用这段代码解决了这个问题。一切正常

class ImageController: UIViewController, UIGestureRecognizerDelegate {

    var delegate: UIGestureRecognizerDelegate?

    @IBOutlet weak var Image: UIImageView!

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

    @IBAction func rotationImage(_ gestureRecognizer : UIRotationGestureRecognizer)
    {
        if gestureRecognizer.state == .began || gestureRecognizer.state == .changed
        {
           gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform.rotated(by: gestureRecognizer.rotation))!
           gestureRecognizer.rotation = 0.0;
        }
    }

    @IBAction func zoomImage(_ gestureRecognizer : UIPinchGestureRecognizer)
    {
        if gestureRecognizer.state == .began || gestureRecognizer.state == .changed
        {
           gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform.scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))!
           gestureRecognizer.scale = 1.0;
        }
    }

/// IMAGE ROTATION & IMAGE SCALE

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool
    {
        return true
    }

/// ALLOW SIMULTANEOUS GESTURES DELEGATE

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

(是的,是 AppleDeveloper 关于 GestureRecognizer 的代码) 感谢所有人。 代码上的另一块砖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多