我在一周前提交了我的应用程序,今天收到了可怕的拒绝电子邮件.它告诉我我的应用程序无法被接受,因为我使用的是非公共API; 具体来说,它说,
应用程序中包含的非公共API是firstResponder.
现在,违规的API调用实际上是我在SO上找到的解决方案:
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
Run Code Online (Sandbox Code Playgroud)
如何在屏幕上显示当前的第一响应者?我正在寻找一种不会让我的应用被拒绝的方法.
我试图在a的子视图中触发一个事件UITableViewCell,让它冒泡响应者链并由自定义UITableViewCell子类处理.
基本上:
SomeView.m(这是一个子视图UITableViewCell)
[self.button addTarget:nil action:@selector(someAction:) events:UIControlEventTouchUpInside]
Run Code Online (Sandbox Code Playgroud)
SomeCustomCell.m
- (void)someAction:(id)sender {
NSLog(@"cool, the event bubbled up to the cell");
}
Run Code Online (Sandbox Code Playgroud)
为了测试为什么这不起作用,我someAction:在ViewController上添加了方法,并且ViewController最终处理从表视图单元子视图冒泡的事件,即使Cell应该处理它.我已经检查过Cell是否在响应者链上,并且我已经验证了在单元格上方和下方的响应者链上的任何视图如果它们实现该someAction:方法将响应该事件.
到底发生了什么事?
这是一个显示它的项目https://github.com/keithnorm/ResponderChainTest这是预期的行为吗?我没有找到任何文档说明UITableViewCell的处理方式与其他UIResponder的处理方式不同.