2016-07-12 6 views
0

外部UIViewControllerのクラスでタップジェスチャを処理しようとしていますが、関数が呼び出されませんでした。ここに私の コードされていますセレクタアクションで関数が呼び出されない

import SceneKit 
import UIKit 

class SceneManager 
{ 
private let assetFolder: String 
private let mainCamera: SCNNode 
private let view: SCNView 
private let scene: SCNScene 

init(view: SCNView, assetFolder: String, sceneFile: String, mainCameraName: String, backgroundColor: UIColor) { 
    self.assetFolder = assetFolder 
    self.scene = SCNScene(named: (self.assetFolder + "/scene/" + sceneFile))! 
    self.mainCamera = self.scene.rootNode.childNodeWithName(mainCameraName, recursively: true)! 
    self.view = view 
    self.view.backgroundColor = backgroundColor 
    self.view.allowsCameraControl = false 
    self.view.pointOfView = self.mainCamera 
    self.view.scene = self.scene 

    //PROBLEM BELOW 
    let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) 
    self.view.addGestureRecognizer(gesture) 
} 

@objc func handleTap(sender: UITapGestureRecognizer) { 
    print("hello") 
} 
} 

ここでは私のViewControllerクラスです: 輸入のUIKit 輸入QuartzCore 輸入SceneKit

class ViewController: UIViewController 
{ 
override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    let view = self.view as! SCNView 
    view.showsStatistics = true 

    _ = SceneManager(view: view, assetFolder: "art.scnassets", sceneFile: "EURO_COPTER.dae", mainCameraName: "camera", backgroundColor: UIColor.blackColor()) 
} 
} 

誰かがアイデアを持っている場合。前もって感謝します。あなたのクラスを宣言すると、それはサブクラスクラスの後UIGestureRecognizerDelegateを追加し、

- :

+0

を助けるかもしれないコード次試してみてください。=真 –

+0

self.view.userInteractionEnabledあなたはどこのViewControllerのコードを追加することができますあなたはこれのオブジェクトを作成しています。 –

答えて

0

は、このようにしてください。ここではそれが私の場合は、次のようになります。

let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) 
self.view.userInteractionEnabled = true; 
gesture.delegate = self 
self.view.addGestureRecognizer(gesture) 
+0

gesture.delegate = self - > "タイプSceneManagerをタイプUIGestureRecognizerDelegateに割り当てることができません"、userInteractionEnabledは残念なことに変更されません。 – Silvering

+0

UIGestureRecognizerDelegateから継承できません。私は受け取る: "タイプSceneManager"はprotocole NSObjectProtocolに従っていない – Silvering

0

それは追加してみ

let gesture = UITapGestureRecognizer(target: self, action: #selector(SceneManager.handleTap(_:))) 
+0

はい私は既に試み、変化なし.... – Silvering

関連する問題