刷卡不起作用。怎么解决这个?

时间:2017-01-10 10:02:28

标签: ios swift swift3

我是iOS开发的初学者。 我正在做一个像滑动图像的项目 1.搜索名为Swipe Gesture Recognizer的组件 2.抓住它并将其放在视图顶部(使用层次结构确保将其放在其上,如果将其放在另一个元素上,则此代码将无法工作)
3.在层次结构中选择一个“滑动手势识别器”,然后转到其属性页面。向左滑动更改 4.确保其他识别器的“滑动”属性为“右” 5.选择UIScrollView并取消选中启用滚动
6.将detectSwipe()连接到两个识别器。

上述步骤是我的任务,但我无法完成第6步

我认为IBAction没有得到认可。

这是我的代码

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var scrollView: UIScrollView!
    // initialize UIImageView empty array
    var images  = [UIImageView]()

    let MAX_PAGE = 2
    let MIN_PAGE = 0
    var currentPage = 0

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func viewDidAppear(_ animated: Bool) {

        var contentWidth: CGFloat = 0.0
        let scrollWidth = scrollView.frame.size.width

        for x in 0...2{
            let image = UIImage(named: "icon\(x).png")
            let imageView = UIImageView(image: image)
            images.append(imageView)

            var newX: CGFloat = 0.0
            newX = scrollWidth / 2 + scrollWidth * CGFloat(x)

            contentWidth += newX

            scrollView.addSubview(imageView)
            imageView.frame = CGRect(x: newX - 75, y: (scrollView.frame.size.height / 2) - 75, width: 150, height: 150)
        }

        self.images[self.currentPage].transform = CGAffineTransform.init(scaleX: 1.4, y: 1.4)

        scrollView.clipsToBounds = false

        scrollView.contentSize = CGSize(width: contentWidth, height: view.frame.size.height)
    }



    @IBAction func detectSwipe(_ sender: UISwipeGestureRecognizer) {

        if (currentPage < MAX_PAGE && sender.direction == UISwipeGestureRecognizerDirection.left) {
            moveScrollView(direction: 1)

        }

        if (currentPage > MIN_PAGE && sender.direction == UISwipeGestureRecognizerDirection.right) {
            moveScrollView(direction: -1)
        }
    }

    func moveScrollView(direction: Int){
        currentPage = currentPage + direction
        let point: CGPoint = CGPoint(x: scrollView.frame.size.width * CGFloat(currentPage), y: 0.0)
        scrollView.setContentOffset(point, animated: true)

        // Create a animation to increase the actual icon on screen
        UIView.animate(withDuration: 0.4){
            self.images[self.currentPage].transform = CGAffineTransform.init(scaleX: 1.4, y: 1.4)

            // Revert icon size of the non-active pages
            for x in 0..<self.images.count {
                if (x != self.currentPage) {
                    self.images[x].transform = CGAffineTransform.identity
                }
            }
        }
    }

}

这是我的视图层次结构

enter image description here

错误不滚动

enter image description here

1 个答案:

答案 0 :(得分:0)

您的步骤6基本上确保在识别您的手势时调用哪个方法。 在你的情况下,你希望你的detectSwipe()方法被激发。

有很多方法可以实现这一点,最简单的方法是进入你的视图层次结构,控制+拖动你的&#34;滑动手势识别器&#34;到视图控制器。执行此操作后,您将看到一个列出许多选项的小窗口,其中一个选项通常是在Sent Actions下的detectSwipe。选择那个。

如果您担心无法识别IBAction,一种简单的验证方法是转到您定义方法的位置(在ViewController类中),您应该能够在方法名称的左侧看到一个小气泡(在我们通常放置断点的地方)。此泡泡确认此方法可用作任何UI操作的目标。

如果答案有助于解决您的问题,请将答案标记为正确,如果您有正确的解决方案,请立即投票,我是新来的:D