在不使用私有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;}@endiOS 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 关注
- 756 浏览
添加回答
举报
0/150
提交
取消
