Ich habe eine UIScrollView
mit Paging aktiviert, die zwei View-Controller enthält: vc0, vc1. Der scrollview ist in einer UIView ("dummyView") enthalten, die in einem eigenen View-Controller enthalten ist.UITapGestureRecognizer funktioniert nicht in UIScrollView
Das Problem besteht darin, dass VC1 nicht auf Berührungen reagiert, wenn der Ansichtscontroller, der den Bildlauf enthält, auf den ursprünglichen Ansichtscontroller eingestellt ist. Wenn vc1 jedoch auf den anfänglichen Ansichtssteuerungscontroller eingestellt ist, reagiert vc1 auf Berührungsereignisse gerade fein
Warum reagiert vc1 nicht auf Berührungen, wenn es durch das scrollView betrachtet wird?
Ich habe die ViewdidLoad() der View-Controller, die die Scrollview enthält, wo ich die Scrollview und alle seine Unteransichten eingerichtet.
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var dummyView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.contentSize = CGSizeMake(self.view.frame.width * 2, self.view.frame.height);
dummyView.frame.size = scrollView.contentSize
createConstraintsForDummyView()
let vc0 = self.storyboard?.instantiateViewControllerWithIdentifier("vc0") as! ViewController0
self.addChildViewController(vc0)
self.dummyView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
createConstraintsForVC0(vc0)
let vc1 = self.storyboard?.instantiateViewControllerWithIdentifier("vc1")
var frame1 = vc1!.view.frame
frame1.origin.x = self.view.frame.size.width
vc1!.view.frame = frame1
self.addChildViewController(vc1!)
self.dummyView.addSubview(vc1!.view)
vc1!.didMoveToParentViewController(self)
createConstraintsForVC1(vc1)
}
EDIT: ich die Klasse für VC1 aufgenommen haben
import UIKit
class ViewController1: UIViewController, UIGestureRecognizerDelegate {
func handleTap(recognizer: UITapGestureRecognizer){
print("Tapped!")
}
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
tap.delegate = self
self.view.addGestureRecognizer(tap)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
Wo und wie Sie die TapRec – 123FLO321
hinzufügen Ich habe es direkt zu vc0.view hinzugefügt. Ich habe es programmatisch in ViewDidLoad() von vc1 gemacht. Aber auch die touchesBegan() für vc0 funktioniert nicht – Lahav
Wird der viewDidLoad von vc0 aufgerufen. – 123FLO321