1

我有一堆常规的 UIButton,按下时有一个目标。但我也希望它在滑动时工作,并激活 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];

任何人都可以帮忙吗?我知道将 UIButtons 放在子视图中可能会很麻烦,但我真的希望这样做以使元素保持结构化,而不是所有内容都直接放在 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
}
4

2 回答 2

1

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

但回到主题:如果您在按钮顶部创建一个屏幕大小的不可见 UIView 来检查滑动,如果没有滑动,则将“启用用户交互”切换为关闭,也许它有效?

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

希望它有点帮助。

编辑:以一种不做任何接近其开发目的的事情的方式修改标准 UI 元素感觉很奇怪。也许继承 UIControl 本身就是你想要的?这不会很容易,但可能最适合您的解决方案?

于 2013-01-22T13:28:18.617 回答
0

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

于 2013-02-04T23:08:31.163 回答