【发布时间】:2011-02-15 12:35:34
【问题描述】:
我在子视图视图上有一个按钮(为了说话,子视图是一个红色方块),当用户按住该按钮时,红色方块会变成半透明动画。
我有按钮连接到这个方法:
-(IBAction)peekToggle:(id)sendr{
NSLog(@"TOGGLE");
if(self.view.alpha ==1)self.view.alpha = 0.1;
else self.view.alpha = 1;
}
通过行为:touch up inside、touch up outside 和 touch down。因此,当我按住按钮时,红色框变成半透明的,当我松开手指时,它又恢复为不透明。
这最初工作正常,但是如果我按住按钮超过 1 秒,则按钮不会注册 touch up(松开手指)。
注意:我在父视图上确实有一个 longPressGestureRecogniser(子视图的父不是 Button 的父),但它没有被触发(预期)。
我很确定我长按按钮被注册为touch cancel,然后使修饰事件无效。
我该如何预防/解决这个问题?
我可以停止touch Cancel 射击吗? (即使我没有注册控件状态,此事件似乎也会触发)或在touch Cancel 事件中,告诉按钮保持/开始注册事件?
【问题讨论】:
-
longPressGestureRecogniser 在父级上?然后它不会触发,因为父级在按钮“后面”。尝试将 longPressGestureRecogniser 添加到它自己的按钮。如果触摸未被识别,识别器将向下级联触摸到按钮。
-
我应该更清楚,parent = Subview 的父级而不是按钮的父级,我不想要长按事件,长按按钮会触发触摸取消,无论它是否已注册事件与否。
标签: iphone objective-c cocoa-touch ipad ios