我有一堆常规的UIButtons,按下时有一个目标。但是我也希望它在滑动时起作用,并激活touchesbegan或touchesmoved / touchesended。我需要它,因为我想要创建一个类似可转换单词拼图的东西,它也会接收触摸式按键。但是滑动系列仅在触摸开始于self.view时才有效,但不在按钮本身上。只需按下它,就不会记录任何触摸事件。
UIButton* Butt = [UIButton buttonWithType:UIButtonTypeCustom];
Butt.frame= CGRectMake(0, -500, 63 , 63);
[Butt addTarget:self action:@selector(clickWord:)forControlEvents:UIControlEventTouchUpInside];
Butt.userInteractionEnabled= YES;
[aSubview addSubview:Butt];
有人可以帮忙吗?我知道将UIButton放在子视图中可能很麻烦,但我真的希望这样做能够以结构化的方式保留元素,而不是所有内容都直接在self.view上。
我试图将按钮子类化,但它没有帮助
子类代码:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
[self.nextResponder touchesBegan:touches withEvent:event];
// This is where the touch is passed on
}
- (void) toouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesMoved:touches withEvent:event];
[self.nextResponder touchesMoved:touches withEvent:event];
// This is where the touch is passed on
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[self.nextResponder touchesEnded:touches withEvent:event];
// This is where the touch is passed on
}
答案 0 :(得分:1)
如果您正在编写游戏,那么使用像Cocos2D这样的框架而不是标准的UI元素可能是值得的吗?
但回到主题:如果你在按钮顶部创建一个屏幕化的隐形UIView来检查滑动,如果没有滑动,请将“启用用户交互”切换为关闭,也许它有效?
否则创建一个矩阵,您可以在其中检查用户触摸的位置以及他在此视图中执行的操作,并在后台使用此数据。然后你也不再需要按钮......
希望它有所帮助。
编辑:修改标准UI元素的方式很奇怪,因为它们没有做任何接近它们开发的内容。也许子类化UIControl本身就是你想要的?这不是一件容易的事,但可能是最适合你的解决方案吗?
答案 1 :(得分:0)
看起来触摸正在响应但是当它到达uibutton的矩形时,它们将被截获。