将UIButton子视图中的内容传递回UIButton

时间:2015-10-20 23:40:58

标签: ios objective-c uibutton

假设我有一个名为 Cake UIView Cake 有一个手势识别器。

现在,假设我有UIButton名为 Bob

我将蛋糕添加为 Bob 的子视图:

[Bob addSubview: Cake];

现在, Bob UIButton,不再响应内部的控制事件。

我希望 Cake 能够处理触摸,而 Bob 同时处理触摸。目前, Cake 可以处理触摸,但 Bob 懒惰无效。

我尝试过的事情:

  • Cake 的手势识别器的cancelsTouchesInView设置为NO
  • Cake 的手势识别器实现UIGestureRecognizerdelegate,并始终为YES方法返回shouldRecognizeSimultaneouslyWithGestureRecognizer
  • 在每个UIGestureRecognizer[self.view.nextResponder touchesSomething:touches withEvent:event];touchesSomething等)方法中对touchesBegan进行子类化并调用touchesEnded(我也确认了下一个响应者IS FACT是应该处理控制事件的UIButton
  • 不使用手势识别器,只使用touchesSomething中的UIView方法(蛋糕)+通过touchesSomething调用所有{ {1}},superself.superview等。

有没有人知道这项工作的好方法?

2 个答案:

答案 0 :(得分:1)

我的建议如下:

确保将子视图的UserInteraction设置为false!现在应该正确调用按钮的动作。

现在将事件参数添加到操作:

- (IBAction)pressButton:(UIButton *)sender forEvent:(UIEvent *)event 

在操作中检查印刷机是否在子视图内

- (IBAction)pressButton:(UIButton *)sender forEvent:(UIEvent *)event
    // get location
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    // check position
    if (CGRectContainsPoint(self.subview.frame, location) {
        // call selector like the gesture recognizer here
    }
} 

答案 1 :(得分:1)

  

我正在尝试制作蛋糕,这是一个可以作为子视图放入任何按钮而无需额外设置的视图 - 它是各种装饰视图。 Cake的手势识别器可以制作一个小动画

那你就错了。拿走蛋糕的手势识别器;你不需要它。您正试图让Cake响应 Bob 被按下。但这很容易;鲍勃是一个按钮!按钮已经告诉你正在发生的一切 - 它正在被突出显示等等。所以你需要的是一个UIButton子类,告诉Cake何时进行动画。