我有一个简单 - 琐碎的 - UIView父/子层次结构.一位家长(UIView).一个孩子(UIButton).父母边界小于孩子的边界,因此孩子的一部分延伸到其父母的边界框之外.
这就是问题:父母的bbox之外的孩子的那些部分没有接触到.只有在父级的bbox内点击才允许子按钮接收触摸.
有人可以建议修复/解决方法吗?
对于那些关注这个问题的人,这里是我实施的@Bastians最优秀答案的解决方案:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
BOOL isInside = [super pointInside:point withEvent:event];
// identify the button view subclass
UIButton *b = (UIButton *)[self viewWithTag:3232];
CGPoint inButtonSpace = [self convertPoint:point toView:b];
BOOL isInsideButton = [b pointInside:inButtonSpace withEvent:nil];
if (isInsideButton) {
return isInsideButton;
} // if (YES == isInsideButton)
return isInside;
}
Run Code Online (Sandbox Code Playgroud) 我有一个高度优化的JavaScript应用程序,一个高度交互的图形编辑器.我现在开始使用大量数据(图中数千种形状)对其进行分析(使用Chrome开发工具),并且我遇到了以前不寻常的性能瓶颈,即Hit Test.
| Self Time | Total Time | Activity |
|-----------------|-----------------|---------------------|
| 3579 ms (67.5%) | 3579 ms (67.5%) | Rendering |
| 3455 ms (65.2%) | 3455 ms (65.2%) | Hit Test | <- this one
| 78 ms (1.5%) | 78 ms (1.5%) | Update Layer Tree |
| 40 ms (0.8%) | 40 ms (0.8%) | Recalculate Style |
| 1343 ms (25.3%) | 1343 ms (25.3%) | Scripting |
| 378 …
Run Code Online (Sandbox Code Playgroud) 我的一个旧应用程序不适用于iOS8.当我启动应用程序并尝试在任何地方点击屏幕时,我在控制台中收到此消息:
unexpected nil window in _UIApplicationHandleEventFromQueueEvent,
_windowServerHitTestWindow: <UIWindow: 0x7fe4d3e52660; frame = (0 0; 320 568);
opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fe4d3e2c450>;
layer = <UIWindowLayer: 0x7fe4d3e86a10>>
Run Code Online (Sandbox Code Playgroud)
我正在使用旧式MainWindow.xib.在MainWindow.xib中是我的Window对象,以及UINavigationController,它也在其中定义了第一个View Controller.下图显示了连接到App Delegate的Outlets.
下面屏幕截图中的白色"视图"是UIWindow.右边的视图是UINavigationController(隐藏导航栏),其中定义了第一个ViewController.
如何在不使用新项目从头开始重新创建整个应用程序的情况下解决此问题?
编辑:我刚刚发现有一个TINY条带,其中我的按钮实际上会收到他们的点击/点击.
我也注意到我的self.view.window是零.我如何确保设置?
多边形作为Vector2I对象列表(2维,整数坐标)给出.如何测试给定点是否在内?我在网上找到的所有实现都失败了一些微不足道的反例.写一个正确的实现似乎很难.语言并不重要,因为我会自己移植它.
已经实现了SVG规范(Firefox等)部分的浏览器免费为我们进行了测试 - 如果我在SVG对象上附加了一个mousedown监听器,我会在点击形状时收到通知.这太棒了,特别是对于复杂的多边形形状.
我想知道是否有一种方法可以利用这个功能进行更多点击测试.我想知道给定的矩形是否与我的任何SVG形状相交.
例如,我向我的元素添加了3个复杂多边形.现在我想知道矩形(40,40,100,100)是否与它们中的任何一个相交.有没有人知道我怎么可能挂钩已经很好的命中测试支持,而不是自己添加所有这些代码?
谢谢
你如何才能有效地检测到a的非透明像素上的触摸UIImageView
?
考虑下面的图像,显示为UIImageView
.目标是仅在触摸发生在图像的非透明(在这种情况下为黑色)区域时使手势识别器响应.
hitTest:withEvent:
或者pointInside:withEvent:
,尽管这种方法可能非常低效,因为这些方法在触摸事件期间被多次调用.我有一个HTML文档中一个点的坐标(X,Y).如何确定那些坐标处的DOM节点?
一些想法:
(背景:我将Qt的QWebView嵌入到本机应用程序中.我正在尝试根据鼠标结束的DOM节点改变Qt小部件提供的上下文菜单,但是Qt 4.5无法测试DOM元素,虽然这个功能来自4.6.所以我希望我可以将坐标放到Javascript中并使用DOM API进行命中测试.)
谢谢!
如何使用GDI +将鼠标坐标转换为世界坐标?或者使用GDI +绘制SVG形状的边界框(甚至更好)旧的skool区域?
无论如何.我一直在寻找SVG代码并找到:
http://development.mwcs.de/svgimage.html
这是第一个真正适用于SVG的Delphi组件,但我离题了.
该组件使用GDI +显示圆形,曲线等
.GDI +使用矩阵将世界坐标,旋转和扭曲转换为屏幕坐标.
这一部分我明白了.您使用矩阵乘法进行转换.
问题是
如果我将鼠标光标指向一个封闭的形状:
换句话说
,从SVG图像读入的形状是基元被矩阵扭曲成屏幕坐标的基元.如何从屏幕坐标反转到我可以用来查看我是否在形状内的坐标.
请注意
我需要知道我
所处的形状.由于SVG图像的设置方式,每个形状都有一个id,我想用它来查看我用鼠标击中的区域.
编辑
另外
希望你能帮助我找到所有这些扭曲的路径:-).
我试图找到一种方法来获得特定的UIView
给定a CGPoint
.简而言之,我想做一个热门测试.
例如,我有一个UIView
有很多子视图,其大小小于父级UIView
.我想要做的是,当touchMoved
事件发生时,检查触摸的子视图周围的其他子视图.为此,能够将a转换CGPoint
为子视图会很好UIView
.
我是Objective-C的新手.有没有好办法呢?任何建议都会非常有用.:)
我想制作一个自定义控件,用作叠加层.该控件应包含一些应该绘制的子控件,并且应该像往常一样可以单击.但控件中的其他所有内容都应该是透明的并且"可点击".
以下是我尝试实现此目的的方法......首先,我在将要放置叠加层的窗口中使用PreviewMouseDown\Up\Move事件.我希望这些事件"通过"我的自定义控件的透明部分,但停止在不透明(例如在我的按钮).其次,这是我的控件的xaml(root UserControl节点保持不变):
<Canvas Background="transparent" IsHitTestVisible="true">
<Button Canvas.Left="384" Canvas.Top="34" Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" IsHitTestVisible="True" />
<TextBlock Canvas.Left="27" Canvas.Top="105" Height="36" Name="textBlock1" Text="TextBlock" Width="432" FontSize="24" IsHitTestVisible="False" Foreground="Red" FontWeight="Bold" />
</Canvas>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将Canvas的IsHitTestVisible设置为false,则包括按钮在内的整个控件将变为"unhittable".如果将其设置为true,则所有隧道事件都将停止在自定义控件上,并且按钮将变为不可点击.
实现这种行为的正确方法是什么?是否可以在没有子画布画布(或任何其他面板)的情况下这样做?
hittest ×10
ios ×3
javascript ×3
svg ×2
uiview ×2
delphi ×1
dom ×1
gdi+ ×1
geometry ×1
ios8 ×1
iphone ×1
objective-c ×1
optimization ×1
overlay ×1
polygon ×1
qt ×1
touch ×1
transparent ×1
uiimageview ×1
uiwindow ×1
wpf ×1