尝试根据窗口内的CGPoint确定命中哪些(如果有的话)辅助功能元素。这个是可能的吗?一种可访问性元素命中测试...应该返回命中的任何辅助功能元素(包括系统创建的)。似乎必须有一种方法来做到这一点。
发布于 2012-06-05 04:15:44
我担心为了实现你想要的东西,你必须从根本上重新实现,比如浏览器在DOM中进行事件处理的捕获阶段:
keyWindow,或者(如果您的应用程序是多屏幕)屏幕的最前面的窗口,您必须通过windowLevel等来确定该窗口。H19如果不是辅助功能元素,请检查它是否是辅助功能元素,如果不是,则检查F110 H111检查它的accessibility-frame是否包含question.
到目前为止,我们已经处理了可访问性的情况-元素和容器内的元素。
还有一种额外的情况需要介绍,那就是可访问性容器,它们本身就是可访问性元素:
我们有一个容器,它没有为有问题的点产生元素。
如果它是一个可访问性元素,检查它的框架是否包含point,如果包含,则返回self,如果不包含,则返回bail。
我说的保释总是指归零。
现在获取所有逻辑,将其转换为代码,并将其放入NSObject上的一个类别中。
发布于 2012-04-28 03:59:56
我的最佳答案是:将所有可访问性元素添加到一个数组中。在您的touchesEnded方法中,枚举数组并检查是否有任何元素被触及。一种方法是检查元素的boundingBox是否包含CGPoint。然后你可以写一堆代码来响应这种触摸!希望这能有所帮助!^_^
发布于 2012-06-01 21:22:28
有两种可能的方法可以做到这一点。在第一个中,您创建了一个UIView类别(新文件,类别,命名为“”,“UIView”的子类),并将以下代码放入其中:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
NSLog(@"%@", self);
}到目前为止,这段代码可以处理所有的UIView,但不能处理它自身的所有子类。因此,您需要创建更多的子类(例如,UIControl、UIWindow等)。在这些子类中,您不需要NSLog()任何东西,只需调用:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
}因为所有这些子类都将调用超类,所以它们最终将调用UIView的NSLog()。缺点是你必须为所有的情况创建大量的子类。例如,UIControl需要UIView,然后UIButton需要UIControl,以此类推。
。
用另一种方式并不完全符合您的要求,但要容易得多。只需递归调用子视图即可。
- (void)logView:(UIView*)v index:(int)i
{
NSMutableString *str = [NSMutableString string];
for (int u = 0; u<i; u++) { [str appendString:@"| "]; }
[str appendFormat:@"<%@ %p frame:%@>", v.class, v, NSStringFromCGRect(v.frame)];
// of course you can change it to display your accessibility hint/label
printf("%s\n", [str UTF8String]);
for (UIView *vv in v.subviews) { [self logView:vv index:i+1]; }
}您只需调用此方法一次:
[self logView:self.view index:0];…它会自动创建一棵树作为输出:
<UITextField 0x6b30010 frame:{{20, 13}, {280, 31}}>
| <UITextFieldRoundedRectBackgroundView 0x6b31e00 frame:{{0, 0}, {280, 31}}>
| | <UIImageView 0x6b31fe0 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b32070 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b320e0 frame:{{0, 0}, {0, 0}}>https://stackoverflow.com/questions/10356895
复制相似问题