在不使用私有API的情况下获取当前的第一个响应程序一个多星期前,我提交了我的应用程序,今天收到了令人恐惧的拒绝邮件。它告诉我,我的应用程序不能被接受,因为我使用的是一个非公共的API;具体来说,它说,应用程序中包含的非公共API是FirstResponder。现在,违规的API调用实际上是我在这里找到的解决方案,所以:UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];UIView *firstResponder = [keyWindow performSelector:
@selector(firstResponder)];如何在屏幕上获得当前的第一个响应程序?我正在寻找一种不会让我的应用程序被拒绝的方法。
3 回答
弑天下
TA贡献1818条经验 获得超8个赞
@implementation UIView (FindFirstResponder)- (id)findFirstResponder{ if (self.isFirstResponder) { return self; } for (UIView *subView in self.subviews) { id responder = [subView findFirstResponder]; if (responder) return responder; } return nil;}@end
iOS 7+
- (id)findFirstResponder{ if (self.isFirstResponder) { return self; } for (UIView *subView in self.view.subviews) { if ([subView isFirstResponder]) { return subView; } } return nil;}
斯威夫特
extension UIView { var firstResponder: UIView? { guard !isFirstResponder else { return self } for subview in subviews { if let firstResponder = subview.firstResponder { return firstResponder } } return nil }}
SWIFT中的用法示例:
if let firstResponder = view.window?.firstResponder { // do something with `firstResponder`}
慕虎7371278
TA贡献1802条经验 获得超4个赞
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
[self.view.window endEditing:YES]
.
- 3 回答
- 0 关注
- 675 浏览
添加回答
举报
0/150
提交
取消