2016-01-22 5 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. Как вы можете заметить, у меня есть TAP GESTURE в WALLVIEW. Когда программа выполняется, кран объекта WALLVIEW не вызывает метод WallNoteTapped:. Подозревать, что события касания не передаются объекту WALLVIEW «note».

Я не могу понять, почему метод «WallNoteTapped:» не запускается.

Благодаря

EDIT: Я сделал WALLVIEW подкласс UIImageView, а не UIView, и она работала, наконец.

ответ

0

Добавление UITapGestureRecognizer отменяет передачу в своих подзонах.

Попробуйте установить cancelsTouchesInView в false.

+0

Спасибо за ваш ответ. Но это не решило мою проблему. Какая проблема решена, я создал подкласс UIImageView UIImageView, а не UIView, и это сработало. – slysid

+0

Тогда проблема заключалась в том, что UIImageView по умолчанию имеет userInteractionEnabled для false. –

Смежные вопросы