当前位置: 编程技术>移动开发
本页文章导读:
▪(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。
说了这么多,大家可能还会觉得比较抽象,没关系,大家可以下载声波通信的源代码自己理解:点击打开链接 。
最新技术文章: