ifish/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m

136 lines
4.6 KiB
Objective-C

//
// ConnectHotpotViewController.m
// Ifish
//
// Created by Minghao Xue on 2018/7/16.
// Copyright © 2018年 lianlian. All rights reserved.
//
#import "ConnectHotpotViewController.h"
#import "ConnectHotspotTipViewController.h"
#import "dataContorl.h"
#import<SystemConfiguration/CaptiveNetwork.h>
#import "IFishHotpotUDPHelper.h"
@interface ConnectHotpotViewController ()<UITextFieldDelegate, IFishHotpotUDPHelperDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UITextField *nameLbl;
@property (strong, nonatomic) IBOutletCollection(UIImageView) NSArray *dashView;
@property (weak, nonatomic) IBOutlet UITextField *pwdTf;
@property (weak, nonatomic) IBOutlet UIView *containerView;
@end
@implementation ConnectHotpotViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"热点连接";
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keybordframeChanged:) name:UIKeyboardDidChangeFrameNotification object:nil];
for (UIImageView *view in self.dashView) {
view.backgroundColor = [UIColor clearColor];
view.image = [self imageWithLineWithSize:view.frame.size];
}
}
- (UIImage *)imageWithLineWithSize:(CGSize)size{
CGFloat width = size.width;
UIGraphicsBeginImageContext(size);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGFloat lengths[] = {2,2};
CGContextRef line = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(line, [UIColor colorWithRed:133/255.0 green:133/255.0 blue:133/255.0 alpha:1.0].CGColor);
CGContextSetLineDash(line, 0, lengths, 1);
CGContextMoveToPoint(line, 0, 1);
CGContextAddLineToPoint(line, width-10, 1);
CGContextStrokePath(line);
return UIGraphicsGetImageFromCurrentImageContext();
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)keybordframeChanged:(NSNotification *)no {
NSDictionary *userInfo = no.userInfo;
// 动画的持续时间
double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
// 键盘的frame
CGRect keyboardF = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardF = [self.view convertRect:keyboardF fromView:[UIApplication sharedApplication].keyWindow];
CGRect containerViewF = [self.view convertRect:self.containerView.frame fromView:self.scrollView];
CGFloat miniSpacing = 4;
CGFloat offset = CGRectGetMaxY(containerViewF) + miniSpacing - CGRectGetMinY(keyboardF);
if (offset <= 0) {
offset = 0;
}
[UIView animateWithDuration:duration animations:^{
self.scrollView.contentInset = UIEdgeInsetsMake(-offset, 0, 0, 0);
}];
}
- (IBAction)clickHereBtnClicked:(id)sender {
ConnectHotspotTipViewController *vc = [[ConnectHotspotTipViewController alloc] initWithNibName:@"ConnectHotspotTipViewController" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
}
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
- (IBAction)setLinkBtnClicked:(id)sender {
if (self.nameLbl.text.length == 0) {
[self.view makeToast:@"请输入正确的路由器名称"];
return;
}
BOOL isRight =[dataContorl isIncludeSpecialCharact:self.pwdTf.text];
if (!isRight) {
[self.view makeToast:@"路由器密码不能包含特殊字符,只能为数字字母下划线"];
return;
}
if (![[self currentWifiSSID].lowercaseString hasPrefix:@"ifish"]) {
[self.view makeToast:@"请先将手机连接到wifi:ifish-xxxx"];
return;
}
NSString *ssidName = self.nameLbl.text;
NSString *ssidPwd = self.pwdTf.text;
[self sendToDeviceWithSSIDName:ssidName andSSIDPWD:ssidPwd];
}
- (NSString *)currentWifiSSID {
NSString *ssid = @"Not Found";
CFArrayRef myArray = CNCopySupportedInterfaces();
if (myArray != nil) {
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
if (myDict != nil) {
NSDictionary *dict = (NSDictionary *)CFBridgingRelease(myDict);
ssid = [dict valueForKey:@"SSID"];
}
}
return ssid;
}
#pragma mark - UDP related
- (void)sendToDeviceWithSSIDName:(NSString *)name andSSIDPWD:(NSString *)pwd {
[IFishHotpotUDPHelper sharedInstance].delegate = self;
[[IFishHotpotUDPHelper sharedInstance] broadCaseUDPWith:name pwd:pwd];
}
#pragma mark - IFishHotpotUDPHelperDelegate
- (void)udpHelperMessage:(NSString *)msg {
[self.view makeToast:msg];
}
@end