在不使用私有API的情況下獲取當前的第一個響應程序一個多星期前,我提交了我的應用程序,今天收到了令人恐懼的拒絕郵件。它告訴我,我的應用程序不能被接受,因為我使用的是一個非公共的API;具體來說,它說,應用程序中包含的非公共API是FirstResponder?,F在,違規的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 關注
- 719 瀏覽
添加回答
舉報
0/150
提交
取消