2015-10-05 58 views
2

背景

我试图做一个UICollectionViewCell更像一个按钮(即:不要触摸动画暗淡)。我有一个想法,就是用UIButton填充单元格。然后该按钮将处理被轻拍的视觉效果。但之后我需要将触摸事件传递给父级(UICollectionViewCell),以便按钮不会消耗事件。这样我可以通过收集视图的didSelectItemAtPath来处理它。下面的问题是我想弄清楚如何传递事件。如何发送触摸事件nextResponder斯威夫特

我的问题

我碰到this Objective-C answer来传递触摸事件上:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
    [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

不过,我卡住了,当我试图将其转换为斯威夫特:

class MyButton: UIButton { 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     super.touchesBegan(touches, withEvent: event) 
     self.nextResponder() // ??? 
    } 
} 

nextResponder方法不接受任何参数,那么如何传递触摸事件?

我无法使用相关的SO问题(herehere)来帮助我弄清楚这一点。

回答

2

nextResponder方法返回一个可选UIResponder?,所以你可以简单地调用touchesBegan返回的对象:

self.nextResponder()?.touchesBegan(touches, withEvent: event) 
+1

这解决了我问的问题。不幸的是,我的'UICollectionViewCell'仍然没有收到触摸事件。但是,除非你知道问题可能出在哪边,否则这可能需要一个新的问题。 – Suragch