当前位置: 编程技术>移动开发
本页文章导读:
▪(2)UITabBar and UINavigationController基础教程之UITextField键盘隐藏及防止键盘遮挡 (二)UITabBar and UINavigationController基础教程之UITextField键盘隐藏及防止键盘遮挡之前我们实现了页面切换
(一)UITabBar and UINavigationController基础教程之切换页面http://blog.csdn.net/zhangyankan/article/de.........
▪ matlab发生m序列代码 matlab产生m序列代码%%%产生m序列
function[seq]=mseq(connections,registers,len)%registers为寄存器初值序列,connections为各个寄存器的反馈连接取值序列(0/1)(不包括第一个寄存器)
m=length(connections);
L=2^m.........
▪ 声波通讯原理及源代码 声波通信原理及源代码 目前声波通信已经在iphone和android中广泛的应用起来了,比如iphone中的chirp,android中的茄子快传,支付宝的声波支付,小米快传等。这些传输技术大多都是使.........
[1](2)UITabBar and UINavigationController基础教程之UITextField键盘隐藏及防止键盘遮挡
来源: 互联网 发布时间: 2014-02-18
(二)UITabBar and UINavigationController基础教程之UITextField键盘隐藏及防止键盘遮挡
接下来我们在.h文件中实现
之前我们实现了页面切换
(一)UITabBar and UINavigationController基础教程之切换页面http://blog.csdn.net/zhangyankan/article/details/12833619
这次我们实现UITextField键盘隐藏及防止键盘遮挡
首先我们在.m文件中那个让viewcontroller实现UITextFieldDelegate
#import <UIKit/UIKit.h> #import "JBaseViewController.h" @interface JSecondViewController : JBaseViewController<UITextFieldDelegate> @end
接下来我们在.h文件中实现
#import "JSecondViewController.h" #import "StudentDataHelper.h" #import "Student.h" @interface JSecondViewController () @property UITextField *name; @property UITextField *age; @property UITextField *sex; @end @implementation JSecondViewController -(void)buildLayout { //创建出需要的界面元素 NSArray *text = @[@"姓名",@"年龄",@"性别"]; for (int i=0; i<3; i++) { UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(30, 100*i+70, 50, 30)]; lab.text = [text objectAtIndex:i]; lab.backgroundColor = [UIColor clearColor]; [self.view addSubview:lab]; [lab release]; } _name = [[UITextField alloc]initWithFrame:CGRectMake(90, 70, 200, 30)]; _name.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:_name]; [_name release]; _age = [[UITextField alloc]initWithFrame:CGRectMake(90, 170, 200, 30)]; _age.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:_age]; [_age release]; _sex = [[UITextField alloc]initWithFrame:CGRectMake(90, 270, 200, 30)]; _sex.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:_sex]; [_sex release]; UIButton * btn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame=CGRectMake(90, 340, 150, 40); btn.backgroundColor=[UIColor clearColor]; [btn setTitle:@"保存" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(save) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; [btn release]; } -(void)save { //这里就先不介绍怎么具体存入数据库了 //NSLog(@"==1=="); Student * student=[[Student alloc]init]; student.name=_name.text; student.sex=_sex.text; student.age=_age.text; StudentDataHelper * stu=[StudentDataHelper sharedHelper]; //NSLog(@"%@",student.name); [stu addStudent:student]; [student release]; } //隐藏输入键盘 (点击return) - (BOOL)textFieldShouldReturn:(id)sender { [sender resignFirstResponder]; return YES; } //隐藏输入键盘(文本框 失去焦点键盘隐藏) -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [_name resignFirstResponder]; [_age resignFirstResponder]; [_sex resignFirstResponder]; } -(void)textFieldDidBeginEditing:(id)sender { if (sender==_sex) { //CGRectOffset,让一个矩阵偏移一定的量 CGRect target = CGRectOffset(self.view.frame, 0, -80); [UIView animateWithDuration:0.25 animations:^{ self.view.frame = target;}]; } } - (void)textFieldDidEndEditing:(id)sender { if (sender==_sex) { CGRect target = CGRectOffset(self.view.frame, 0, 80); [UIView animateWithDuration:0.25 animations:^{ self.view.frame = target;}]; } } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor=[UIColor grayColor]; [self buildLayout]; //隐藏navigationController [self.navigationController setNavigationBarHidden:YES animated:YES]; //把它们3个属性的代理设成自身 _name.delegate=self; _age.delegate=self; _sex.delegate=self; } @end
这样就可以基本实现了
[2] matlab发生m序列代码
来源: 互联网 发布时间: 2014-02-18
matlab产生m序列代码
%%%产生m序列
function[seq]=mseq(connections,registers,len)%registers为寄存器初值序列,connections为各个寄存器的反馈连接取值序列(0/1)(不包括第一个寄存器)
m=length(connections);
L=2^m-1;%m序列周期长度
if len==0
len=L;%len需要输出序列的长度
end
fan=0;
for i=1:len
seq(i)=registers(m);%seq(i)为输出(第m个寄存器的值)
for j=1:m
fan=fan+connections(j)*registers(j);
fan=(mod(fan,2));%fan为第一个寄存器移位输入1或0
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1);
end
registers(1)=fan;
fan=0;
end
%%%产生m序列
function[seq]=mseq(connections,registers,len)%registers为寄存器初值序列,connections为各个寄存器的反馈连接取值序列(0/1)(不包括第一个寄存器)
m=length(connections);
L=2^m-1;%m序列周期长度
if len==0
len=L;%len需要输出序列的长度
end
fan=0;
for i=1:len
seq(i)=registers(m);%seq(i)为输出(第m个寄存器的值)
for j=1:m
fan=fan+connections(j)*registers(j);
fan=(mod(fan,2));%fan为第一个寄存器移位输入1或0
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1);
end
registers(1)=fan;
fan=0;
end
[3] 声波通讯原理及源代码
来源: 互联网 发布时间: 2014-02-18
声波通信原理及源代码
目前声波通信已经在iphone和android中广泛的应用起来了,比如iphone中的chirp,android中的茄子快传,支付宝的声波支付,小米快传等。这些传输技术大多都是使用声波作为握手信号,然后使用wifi或其他信道传输数据。比如茄子快传可能的实现为,接收方先建立wifi热点,然后将热点名称通过声波发送出去,发送方在收到声波后解码出wifi热点名称,然后自动链接热点并传输文件,整个过程不需要人工干预。这些程序的核心技术和难点在于声波通信,下面讲解声波通信原理。
声波通信的原理其实比较简单,主要是用单频率声音信号对数据进行编码,然后播放这些单频率声音,接收方在收到声音后,识别出频率,然后根据频率解码出数据。比如:我们可以将1500HZ的正弦波对应数字1,1600HZ的正弦波对应数字2,1700HZ的正弦波对应数字3。那么数字串3123就对应4段正弦波,规定每段正弦波持续100ms,则3123对应400毫秒的声音段。接收方录制声音,对收到的声音进行解析,识别出1700HZ,1500HZ,1600HZ,1700HZ四段正弦波频率,然后查找码本,解码出的数字就是3123。
说了这么多,大家可能还会觉得比较抽象,没关系,大家可以下载声波通信的源代码自己理解:点击打开链接 。
最新技术文章: