iOS 获取屏幕最上层window以及响应者

1. 通过UIApplication获取

1
2
3
UIWindow *window = [UIApplication sharedApplication].keyWindow;
或者
UIWindow *window = [[UIApplication sharedApplication].windows lastObject];

2. 比较严谨的获取方法:
1
2
3
4
5
6
7
8
9
- (UIWindow *)lastWindow{
NSArray *windows = [UIApplication sharedApplication].windows;
for (UIWindow *window in [windows reverseObjectEnumerator]) {
if ([window isKindOfClass:[UIWindow class]] && CGRectEqualToRect(window.bounds, [UIScreen mainScreen].bounds)) {
return window;
}
}
return [UIApplication sharedApplication].keyWindow;
}

3. 查找响应者
1
2
3
4
5
6
7
8
9
10
11
// 新建一个UIView的类目,把这个方法放进去,以后就可以直接通过view.findResponderViewController来获取视图的控制器了。
- (UIViewController *)findResponderViewController{
UIResponder *next = self.nextResponder;
do {
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
}
next = next.nextResponder;
} while (next != nil);
return nil;
}

-------------本文结束感谢您的阅读-------------
最近的文章

iOS tableViewCell相关设置

1. 去掉底部多余的表格线1[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];2. 在自定义tableViewCell中设置分割线 顶头显示 self代表cell1234567891011if ([sel …

继续阅读
更早的文章

Git SourceTree配置

创建SSH Key,因为本地的Git仓库与Github远程仓库之间是通过SSH加密的。首先,需要到主目录上查看是否有.ssh目录,再查看.ssh目录下有没有id_rsa和id_rsa.pub文件,如下 发现没有上述的两个文件,这时需要创建:1ssh-keygen -t rsa -C "yo …

继续阅读