Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未调用UIScrollViewDelegate函数_Ios_Swift_Sprite Kit_Uiscrollviewdelegate_Skview - Fatal编程技术网

Ios 未调用UIScrollViewDelegate函数

Ios 未调用UIScrollViewDelegate函数,ios,swift,sprite-kit,uiscrollviewdelegate,skview,Ios,Swift,Sprite Kit,Uiscrollviewdelegate,Skview,当我拖动视图时,它似乎会滚动(侧栏会出现并四处移动),但我的委托函数不会触发问题:为什么协议函数中的println没有被调用?作为背景,我试图用Swift重新编写,这就是UIView与SKView混合的原因,等等 我的日志输出是: 852.0480.0成品视图加载 代码是: import UIKit import SpriteKit var kViewTransformChanged = "view transform changed" var scene = GameScene() var s

当我拖动视图时,它似乎会滚动(侧栏会出现并四处移动),但我的委托函数不会触发问题:为什么协议函数中的println没有被调用?作为背景,我试图用Swift重新编写,这就是UIView与SKView混合的原因,等等

我的日志输出是:

852.0
480.0
成品视图加载

代码是:

import UIKit
import SpriteKit
var kViewTransformChanged = "view transform changed"
var scene = GameScene()
var skView = SKView()
var clearContentView = UIView()

extension SKNode {
    class func unarchiveFromFile(file : NSString) -> SKNode? {
        if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
            var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)!
            var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

            archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
            let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
            archiver.finishDecoding()
            return scene
        } else {
            return nil
        }
    }
}

class GameViewController: UIViewController, UIScrollViewDelegate {

    override func viewDidLoad() {

        super.viewDidLoad()

        // Configure the view.
        skView = self.view as SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)

        var contentSize = skView.bounds.size
        contentSize.height *= 1.5
        contentSize.width *= 1.5
        scene.size = contentSize

        println(contentSize.height)
        println(contentSize.width)

        var scrollView = UIScrollView()
        scrollView.frame = skView.frame
        scrollView.contentSize = contentSize
        scrollView.delegate = self
        scrollView.maximumZoomScale = 3
        scrollView.minimumZoomScale = 1
        scrollView.indicatorStyle = UIScrollViewIndicatorStyle.White


        clearContentView.frame = CGRect(origin: CGPointZero, size: contentSize)

        clearContentView.backgroundColor = UIColor.clearColor()

        scrollView.addSubview(clearContentView)
        clearContentView.addObserver(self, forKeyPath: "transform", options: NSKeyValueObservingOptions(), context: &kViewTransformChanged)

        skView.addSubview(scrollView)

        //
        println("Finished viewDidLoad")
    }


    func viewForZoomingInScrollView() -> UIView? {
        println("entering viewForZoomingInScrollView function")
        return self.view
    }

    func scrollViewDidScroll() {
        println("entering scrollViewDidScroll function")
        adjustContent()
    }

    // NOT SURE ABOUT THIS FUNCTION
    func adjustContent() {
        println("entering adjustContent function")
        NSLog("?")
        var scrollV = self.view as UIScrollView
        scene.setScale(scrollV.zoomScale)
        scene.position = scrollV.contentOffset
    }

    func scrollViewDidZoom() {
        println("entering scrollViewDidZoom function")
        adjustContent()
    }

    func scrollViewDidTransform() {
        println("entering scrollViewDidTransform function")
        adjustContent()
    }

    func scrollViewDidEndZooming() {
        println("entering scrollViewDidEndZooming function")
        adjustContent()
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> Int {
        if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
            return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
        } else {
            return Int(UIInterfaceOrientationMask.All.rawValue)
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    override func prefersStatusBarHidden() -> Bool {
        return true
    }
}

您的
UIScrollViewDelegate
函数实现与中的声明不匹配。具体来说,您缺少
UIScrollView
参数

例如,这:

func scrollViewDidScroll() {
    println("entering scrollViewDidScroll function")
    adjustContent()
}
应该是:

func scrollViewDidScroll(scrollView: UIScrollView) {
    println("entering scrollViewDidScroll function")
    adjustContent()
}