2016-07-13 18 views
12

örneğine gönderilen ve buna UIPanGestureRecognizer eklendi:Swift 3: Tanınmayan seçici ben programlı bir <code>UIView</code> oluşturduk Xcode 8

class ViewController: UIViewController{ 
    var preludeView: UIView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     initViews() 
     createConstrants() 

     let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector(("handleTap:"))) 
     preludeView.addGestureRecognizer(panGestureRecognizer) 
    } 

    func handleTap(recognizer: UIPanGestureRecognizer) { 
     print("WORKING!!!!") 
    } 

    func initViews() { 
     ... 
    } 

    func createConstrants() { 
     ... 
    } 
} 

Ama görünümü Xcode dokunuyorum zaman bir hata atıyor:

2016-07-13 09:24:29.918 Draft_Hypa_02[661:83024] -[Draft_Hypa_02.ViewController handleTap:]: unrecognized selector sent to instance 0x17d94a10 2016-07-13 09:24:29.921 Draft_Hypa_02[661:83024] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Draft_Hypa_02.ViewController handleTap:]: unrecognized selector sent to instance 0x17d94a10' * First throw call stack: (0x249cf91b 0x2416ae17 0x249d52b5 0x249d2ee1 0x248fe238 0x294ae9eb 0x290e984f 0x28f7aff1 0x294afd4f 0x28f3ba57 0x28f38017 0x28f78ec9 0x28f7867b 0x28f49125 0x28f476d3 0x24991dff 0x249919ed 0x2498fd5b 0x248df229 0x248df015 0x25ecfac9 0x28fb1189 0x93144 0x24587873) libc++abi.dylib: terminating with uncaught exception of type NSException

Ancak, handleTap işlevindeki bağımsız değişkeni kaldırır ve Selector(("handleTap:")) kolonunu kaldırırsam her şey yolunda gider!

Bu sorunu gidermek için bir günlüğüne harcadık ve yardımlarınız için çok teşekkür ederiz!

cevap

28

bu

#selector(self.handleTap(recognizer:)) 
+1

Xcode, "Value of type" ViewController 'öğesinin "handleTap" üyesi yok " – Raul

+3

@Forze, yöntem ilk parametresinden önce alt çizgi eklemeniz gerekiyor. 'func handleTap (_ tanıyıcı: UIPanGestureRecognizer) {' –

+0

@Nirav teşekkürler, işe yarıyor! Swift 3'te biliyor musunuz, eylem fonksiyonu için harici isim belirlemeliyiz? – Raul

6

gibi olmalıdır 3 senin selectorswift kullanıyorsanız Sen farklı bir şekilde bu ifadeyi yazmalısınız. VC için özel UIView eklemeyi unutmayın

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handleTap(_:)))

yerine

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector(("handleTap:")))

Yeni Yolu

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(YourViewController.handleTap(_:)))

+0

Xcode 8 atıyor senin viewController – Raul

+0

kullanılması kendini yerine ViewController veya adını "Değer türündeki 'ViewController' hayır üyesini 'handleTap' vardır": UIPanGestureRecognizer) {} –

+0

@Forze ait –

2
class ViewController: UIViewController { 

    let customView = UIView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handleTap(_:))) 
     customView.addGestureRecognizer(panGestureRecognizer) 
    } 

    func handleTap(panGesture: UIPanGestureRecognizer) { 

    } 
} 

ait kullanımı, şu hattı.

+0

çağırmadan önce benim .swift dosyasının adını yazmayı unuttum initViews() içine UIView ekliyorum ve bu işlevi viewDidLoad() içine koyuyorum – Raul

İlgili konular