UIButton没有触发touchesbegan

时间:2013-01-22 12:56:28

标签: ios uibutton

我有一堆常规的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
}

2 个答案:

答案 0 :(得分:1)

如果您正在编写游戏,那么使用像Cocos2D这样的框架而不是标准的UI元素可能是值得的吗?

但回到主题:如果你在按钮顶部创建一个屏幕化的隐形UIView来检查滑动,如果没有滑动,请将“启用用户交互”切换为关闭,也许它有效?

否则创建一个矩阵,您可以在其中检查用户触摸的位置以及他在此视图中执行的操作,并在后台使用此数据。然后你也不再需要按钮......

希望它有所帮助。

编辑:修改标准UI元素的方式很奇怪,因为它们没有做任何接近它们开发的内容。也许子类化UIControl本身就是你想要的?这不是一件容易的事,但可能是最适合你的解决方案吗?

答案 1 :(得分:0)

看起来触摸正在响应但是当它到达uibutton的矩形时,它们将被截获。