清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
@implementation ViewController{
NSMutableString *dataString;//邮箱字符串
}
- (void)viewDidAppear{
[super viewDidAppear];
dataString = [NSMutableString string];
//改变windows大小发送通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationViewChanged) name:NSWindowDidResizeNotification object:nil];
//最小化时发送的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationWindowMin) name:NSWindowDidMiniaturizeNotification object:nil];
//点击左上角x号时的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationWindoCloss) name:NSWindowWillCloseNotification object:nil];
//本视图宽高
double mainWidth = self.view.bounds.size.width;
double mainHeight = self.view.bounds.size.height;
//web视图
_webView = [[WebView alloc] initWithFrame:CGRectMake(15, 10, (mainWidth - 20)/2, (mainHeight - 40))];
[self.view addSubview:_webView];
//邮箱显示视图
_textView = [[NSTextView alloc] initWithFrame:CGRectMake((mainWidth - 20)/2+20, 10, (mainWidth - 20)/2-5, (mainHeight - 40))];
[_textView setTextColor:[NSColor redColor]];
[_textView setString:@"email"];
[self.view addSubview:_textView];
//输入框
_textField = [[NSTextField alloc] initWithFrame:CGRectMake(20,(mainHeight - 20), (mainWidth - 60), 20)];
_textField.textColor = [NSColor grayColor];
[_textField setStringValue:@"email"];
[_textField setAlignment:NSTextAlignmentCenter];
[self.view addSubview:_textField];
//go按钮
_goButton = [[NSButton alloc] initWithFrame:CGRectMake((mainWidth - 30), (mainHeight - 20), 30, 20)];
[_goButton setTitle:@"GO"];
[_goButton setAction:@selector(goAction)];
[self.view addSubview:_goButton];
}
//go按钮点击事件
- (void)goAction{
NSURL *url = [NSURL URLWithString:_textField.stringValue];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
[request setTimeoutInterval:60];
[_webView.mainFrame loadRequest:request];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
if (data) {
[self emailData:data];
}
}
}];
[task resume];
}
//提取email并显示出来
- (void)emailData:(NSData *)data{
NSMutableString *emailText = [NSMutableString string];
NSMutableArray *emailArray = [NSMutableArray array];
NSMutableString *stringData = [[NSMutableString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[A-Z0-9a-z%+]+@[A-Za-z0-9]+\\.[A-Za-z]{2,4}" options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *rangeArray = [regex matchesInString:stringData options:0 range:NSMakeRange(0, [stringData length])];
for (NSTextCheckingResult *textResult in rangeArray) {
NSString *sub = [stringData substringWithRange:textResult.range];
[emailArray addObject:sub];
}
for (int i = 0; i < emailArray.count; i++) {
[emailText appendString:[NSString stringWithFormat:@"%@\n",[emailArray objectAtIndex:i]]];
}
dispatch_async(dispatch_get_main_queue(), ^{
dataString = emailText;
[_textView setString:(NSString *)emailText];
});
}
//viewframe改变时执行
- (void)notificationViewChanged
{
//本视图宽高
double mainWidth = self.view.frame.size.width;
double mainHeight = self.view.frame.size.height;
//web视图
_webView.frame = CGRectMake(15, 10, (mainWidth - 20)/2, (mainHeight - 40));
//输入框
_textField.frame = CGRectMake(20,(mainHeight - 20), (mainWidth - 60), 20);
//go按钮
_goButton.frame = CGRectMake((mainWidth - 30), (mainHeight - 20), 30, 20);
//邮箱显示视图
if (_textView) {
[_textView removeFromSuperview];
_textView = nil;
_textView = [[NSTextView alloc] initWithFrame:CGRectMake((mainWidth - 20)/2+20, 10, (mainWidth - 20)/2-5, (mainHeight - 40))];
[_textView setTextColor:[NSColor redColor]];
_textView.string = (dataString.length > 0)?dataString:@"email";
[self.view addSubview:_textView];
}
}
- (void)notificationWindowMin{
//最小化
[super viewDidDisappear];
[_textField removeFromSuperview];
_textField = nil;
[_goButton removeFromSuperview];
_goButton = nil;
[_webView removeFromSuperview];
_webView = nil;
[_textView removeFromSuperview];
_textView = nil;
NSLog(@"最小化");
}
//windows关闭时退出应用
- (void)notificationWindoCloss{
exit(0);
}