我已经成功实现了UIScreenEdgePanGestureRecognizer,并且我的方法被触发了,因为它应该这样做,但手势识别器的“边缘”属性永久设置为UIRectEdgeNone,尽管识别了正确的手势边缘设置为UIRectEdgeBottom。UIScreenEdgePanGestureRecognizer边缘属性未按预期方式设置
下面是我设置的识别器:
- (void)setupEdgeRecogniser {
UIScreenEdgePanGestureRecognizer* r = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpFromBottom:)];
r.minimumNumberOfTouches = 1;
r.maximumNumberOfTouches = 1;
r.delaysTouchesBegan = YES;
r.delegate = self;
[r setEdges:UIRectEdgeBottom];
}
这是获取准确执行的方法,当我想到:
- (void)swipeUpFromBottom:(UIScreenEdgePanGestureRecognizer*)gestureEvent {
// fault occurs here! gestureEvent.edges is always UIRectEdgeNone
if (gestureEvent.edges == UIRectEdgeBottom) {
// do some stuff
}
}
这是非常简单的,但我需要测试边缘属性以查看哪个边缘被识别,上面的示例仅显示问题。我的实际代码库在每个边缘检测到,然后我需要进一步分解。
很明显,我可以通过触发不同的方法来解决这个问题,但我不希望在这种情况下。
有谁知道为什么这个属性没有设置我会如何预期?
非常感谢您的帮助。
很酷,谢谢。我设置了个人识别器,但希望它们都指向相同的方法。我已经按照你的建议分解了这个问题,在我的脑海中,这只是一个多余的东西,但是现在没有关系。 – 2014-10-27 17:45:02
属性名称是'边缘',并有'UIRectEdgeAll'。 Apple的文档中没有任何内容。 Apple给了什么? – bejado 2017-11-27 05:45:12