2016-01-22 71 views
0

我按照附图所示排列了视图。传播UITouch事件

enter image description here

  1. MAINVIEW是添加的子视图的UIScrollView

    class NotewallController:UIViewController, UIScrollViewDelegate { 
    
        var bgImage:UIImageView? 
        var bgScrollView:UIScrollView? 
        var masterView:UIView? 
    
        override func viewDidLoad() { 
    
         self.bgScrollView = UIScrollView(frame: self.view.bounds) 
         self.bgScrollView!.contentSize = CGSizeMake(1000, 1000) 
         self.bgScrollView!.delegate = self 
         self.bgScrollView!.minimumZoomScale = 1.0 
         self.bgScrollView!.maximumZoomScale = 4.0 
         self.view.addSubview(self.bgScrollView!) 
    
         masterView = UIView(frame: CGRectMake(0,0,1000,1000)) 
         masterView!.backgroundColor = UIColor.clearColor() 
         masterView!.userInteractionEnabled = true 
         bgScrollView!.addSubview(masterView!) 
    
         let note = WALLVIEW(frame: CGRectMake(20, 20, 30, 30)) 
         self.masterView!.addSubview(note) 
    
        } 
    
  2. WALLVIEW被的UIView

    的子类

    类WallView:UIView的{

    override init(frame: CGRect) { 
    
        super.init(frame: frame) 
    
        let bgImageView = UIImageView(frame: frame) 
        bgImageView.image = UIImage(named: "stickynote.png") 
        bgImageView.userInteractionEnabled = true 
        self.addSubview(bgImageView) 
    
        let tap = UITapGestureRecognizer(target: self, action: "WallNoteTapped:") 
        bgImageView.addGestureRecognizer(tap) 
    
    } 
    

我的问题是在WALLVIEW。正如你可以注意到的,我在WALLVIEW中有一个TAP手势。程序执行时,轻敲WALLVIEW对象不会调用“WallNoteTapped:”方法。怀疑触摸事件不会传递给WALLVIEW对象“note”。

我不明白为什么“WallNoteTapped:”方法没有被触发。

感谢

编辑: 我做的UIImageView,而不是的UIView WALLVIEW子类,它终于奏效。

回答

0

添加一个UITapGestureRecognizer取消它的子视图。

尝试将cancelsTouchesInView设置为false。

+0

感谢您的回复。但它并没有解决我的问题。解决了我的问题是,我做了UIImageView的WALLVIEW子类,而不是UIView,它的工作。 – slysid

+0

然后问题是,UIImageView作为默认情况下userInteractionEnabled为false。 –