交互式触摸屏
Interactive touch display
我希望拦截父 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)时,将这些事件冒泡到下一个响应者。 touchesBegan:点击按钮时永远不会在父视图上触发,因此我无法在点击按钮时向用户显示内容 "pretty"。
除了为 UIButton、UITableViewCell 创建类别之外,还有更好的方法吗?谢谢
这是我希望在用户触摸屏幕时执行的操作的示例...(注意用户触摸按钮时的白色圆圈):
https://m1.behance.net/rendition/modules/154366385/disp/9532a948c71e28ffda2219600c05ffd9.gif
您可以通过创建 UIView 的子类来实现。
视图应位于视图层次结构的顶部,并且其大小应充满屏幕。
所有触摸事件都将发送到此视图。如果你在pointInside:widthEvent:方法中return NO,触摸事件将被发送到下层对象。
@implementation MyView
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
// show bubble here
return NO; // send touch events to lower layer objects.
}
我希望拦截父 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)时,将这些事件冒泡到下一个响应者。 touchesBegan:点击按钮时永远不会在父视图上触发,因此我无法在点击按钮时向用户显示内容 "pretty"。
除了为 UIButton、UITableViewCell 创建类别之外,还有更好的方法吗?谢谢
这是我希望在用户触摸屏幕时执行的操作的示例...(注意用户触摸按钮时的白色圆圈): https://m1.behance.net/rendition/modules/154366385/disp/9532a948c71e28ffda2219600c05ffd9.gif
您可以通过创建 UIView 的子类来实现。 视图应位于视图层次结构的顶部,并且其大小应充满屏幕。
所有触摸事件都将发送到此视图。如果你在pointInside:widthEvent:方法中return NO,触摸事件将被发送到下层对象。
@implementation MyView
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
// show bubble here
return NO; // send touch events to lower layer objects.
}