Objective c 交互式触摸显示器

Objective c 交互式触摸显示器,objective-c,user-interface,user-experience,Objective C,User Interface,User Experience,我希望截取父UIView上的所有触摸事件,并显示用户触摸但仍将这些触摸事件冒泡到子视图(即UIButtons、UITableViewCell等)的位置,以便这些子视图通过默认方式进行交互 我使用基本代理方法在UIView上以交互方式显示触摸事件没有问题: -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:

我希望截取父UIView上的所有触摸事件,并显示用户触摸但仍将这些触摸事件冒泡到子视图(即UIButtons、UITableViewCell等)的位置,以便这些子视图通过默认方式进行交互

我使用基本代理方法在UIView上以交互方式显示触摸事件没有问题:

    -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
         [super touchesBegan:touches withEvent:event];
    }

    -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
         [super touchesEnded:touches withEvent:event];
    }
我现在的问题是,当UIView包含其他交互式子视图(如UIButtons)时,将这些事件冒泡到下一个响应者。ToucheSBegind:当点击按钮时,不会在父视图上触发,所以当点击按钮时,我无法向用户显示“漂亮”的内容

除了为UIButton、UITableViewCell创建类别之外,还有更好的方法吗?谢谢

这里是一个例子,我期待什么时候做用户触摸屏幕。。。(当用户触摸按钮时,请注意白色圆圈):

您可以通过创建UIView的子类来实现。 视图应位于视图层次结构的顶部,其大小应满屏

所有触摸事件都将发送到此视图。如果在pointInside:widthEvent:方法中返回NO,则触摸事件将发送到较低的对象

@implementation MyView

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    // show bubble here
    return NO; // send touch events to lower layer objects. 
}

我会尝试创建一个平移手势识别器。设置
recognizer.cancelsTouchesInView=NO
,这样它就不会干扰视图的触摸处理。感谢您的回复。你能把手势附加到UIButton的superview上吗?答案很接近,但似乎用户必须拖动他们的手指才能激活父视图中的“操作:选择器”,因此,如果用户只是简单地点击而不移动他们的手指,父视图将永远不会收到手势事件。您也可以使用点击手势识别器,或者制作自己的手势识别器。但手势识别器将允许您收到触摸通知,而不会干扰视图的默认触摸处理。当用户点击UIButtonok时,将点击手势附加到父视图似乎不会触发,因此只有在用户结束触摸后,点击手势才会在父视图上触发。没有接触,明白了。因此,一个子类覆盖视图。我会试试这个然后再给你回复。谢谢