UI:自定义键盘的实现
自定义我的封装键盘,并在试图控制器里对接 (解决多 输入框问题,把输入框存入到可变数组)
@implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible]; CSKeyBoardViewController * RootVC = [[CSKeyBoardViewController alloc]init];
self.window.rootViewController = RootVC;
[RootVC release];
return YES;
}
main.m
//
// CSKeyBoardViewController.m
//
#import "CSKeyBoardViewController.h"
#import "KeyBoard.h" @interface CSKeyBoardViewController ()<UITextFieldDelegate>
@property(nonatomic,retain)UITextField * tf,*tf1,*tf2;
@property(nonatomic,retain)KeyBoard * keyboard;
@property(nonatomic,retain)NSTimer * timer;
@property(nonatomic,retain)NSMutableArray * tfArr; @end @implementation CSKeyBoardViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view. UITextField * textfield = [[UITextField alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width-, )];
NSLog(@"外面%@",textfield);
textfield.placeholder = @"请输入资料";
[self.view addSubview:textfield];
textfield.layer.borderWidth = ;
textfield.layer.cornerRadius = ;
textfield.delegate = self; //如果控制器里有好多的 tf 怎么办 <尚未解决 ????????????????>
// self.timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(textFieldDidBeginEditing:) userInfo:nil repeats:NO];
// 新问题 timer 不知道怎么关闭
UITextField * textfield2 = [[UITextField alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width-, )];
NSLog(@"外面2%@",textfield2);
textfield2.placeholder = @"请输入资料";
[self.view addSubview:textfield2];
textfield2.layer.borderWidth = ;
textfield2.layer.cornerRadius = ;
textfield2.delegate = self; self.tf1 = [[UITextField alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width-, )];
_tf1.placeholder = @"请输入资料";
[self.view addSubview:_tf1];
_tf1.layer.borderWidth = ;
_tf1.layer.cornerRadius = ;
_tf1.delegate = self; self.tf2 = [[UITextField alloc]initWithFrame:CGRectMake(, , self.view.frame.size.width-, )];
_tf2.placeholder = @"请输入资料";
[self.view addSubview:_tf2];
_tf2.layer.borderWidth = ;
_tf2.layer.cornerRadius = ;
_tf2.delegate = self; self.tfArr = [NSMutableArray arrayWithCapacity:];
[_tfArr addObject:textfield];
[_tfArr addObject:textfield2];
[_tfArr addObject:_tf1];
[_tfArr addObject:_tf2]; NSDate * dateNow = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString * dateString = [formatter stringFromDate:dateNow];
KeyBoard * keyboard = [[KeyBoard alloc]initWithFrame:CGRectMake(, , , ) accessoryText:dateString TextFieledArr:_tfArr];
textfield.inputView = keyboard;
textfield2.inputView = keyboard;
_tf1.inputView = keyboard;
_tf2.inputView = keyboard;
[keyboard release];
[textfield release];
[textfield2 release];
[_tf1 release];
[_tf2 release];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//如果控制器有多个 tf 我们让当前鼠标所在的tf 指向 self.tf
-(void)textFieldDidBeginEditing:(UITextField *)textField{
self.tf = textField; //解决多 tf 问题 (属性)
// self.keyboard = [[KeyBoard alloc]initWithFrame:CGRectMake(0, 150, 375, 240) accessoryText:@"我的键盘" TextFieled:self.tf]; // NSLog(@"如果控制器有多个 tf 我们让当前鼠标所在的tf 指向 self.tf %@------%@",self.tf,textField);
//站换思路 用数组
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"来自视图控制器 移动了鼠标");
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
for (UITextField * tf in self.tfArr) {
[tf resignFirstResponder];
}
[_tf resignFirstResponder];//这里没有什么卵用才用上面的数组释放键盘
NSLog(@"试图控制器回收键盘");
} @end
试图控制器(m)文件 CSKeyBoardViewController.m
#import <UIKit/UIKit.h> @interface KeyBoard : UIView<UITextFieldDelegate,UIAlertViewDelegate>
//共外界使用的辅助视图
@property(nonatomic,retain)UILabel * accessorView;
//存储当前的输入框
@property(nonatomic,retain)UITextField * tf; /**
* methods for :
外部调用初始化方法创建自定义键盘视图同时可设置辅助视图显示文字 指定为外部输入框的inputView 同时可指定辅助视图(如需)(.accessoryView) 外部操作的输入框需赋值给该类的tf属性
*/ //初始化自定义键盘视图及设置辅助文字方法
//- (instancetype)initWithFrame:(CGRect)frame accessoryText:(NSString *)text
// TextFieled:(UITextField *)textfield; - (instancetype)initWithFrame:(CGRect)frame accessoryText:(NSString *)text
TextFieledArr:(NSMutableArray *)textfieldArr;;
//..待丰富... @end
自定义键盘.h封装好了 KeyBoard.h
//
// KeyBoard.m #define RandomColor [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0] #import "KeyBoard.h" @implementation KeyBoard -(instancetype)initWithFrame:(CGRect)frame accessoryText:(NSString *)text TextFieledArr:(NSMutableArray *)textfieldArr{
self = [super initWithFrame:frame];
if (self) {
[self setUpCustomViewWithAccessoryText:text TextFieledArr:textfieldArr];
}
return self;
} -(void)setUpCustomViewWithAccessoryText:(NSString *)accesssoryText
TextFieledArr:(NSMutableArray *)textfieldArr{
NSLog(@"里面%@",textfieldArr);
self.backgroundColor = RandomColor;
for (UITextField * tf in textfieldArr) {//遍历外面的 textfield
tf.delegate = self;
} self.tf.delegate = self;
//键盘辅助视图
self.accessorView = [[UILabel alloc]initWithFrame:CGRectMake(, , self.frame.size.width, )];
_accessorView.backgroundColor = RandomColor;
_accessorView.text = accesssoryText;
_accessorView.textAlignment = NSTextAlignmentCenter;
_accessorView.textColor = RandomColor;
[self addSubview:_accessorView];
//自定义按钮事件
NSArray * KeyArr = @[@[@"",@"",@""],@[@"",@"",@""],@[@"",@"",@""],@[@"✔️", @"", @"UI:自定义键盘的实现的更多相关文章
- UI:登录窗的自定义键盘
在创建一个自定义键盘的时候遇到的错误 //双重for循环,对于Button上的数字用二维数组 // NSArray * butArr[4][3] = {@[@"1",@&qu ...
- WPF 自定义键盘焦点样式(FocusVisualStyle)
WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌.这时,其自带的键盘焦点样式(FocusVisualSt ...
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- 原生HTML5 input type=file按钮UI自定义
原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度 ...
- ios 自定义键盘
由于项目需要,需要自定义键盘.ios系统键盘会缓存键盘输入,并保存在系统目录下的文件里,并且是明文存储,存在帐号密码泄漏风险.在别人代码基础上修改了下,美化了下界面,去掉了字符输入,加了点击特效,截图 ...
- Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器
组件模板: 之前: <template> <h3>我是组件</h3><strong>我是加粗标签</strong> </templat ...
- vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化
一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 ...
- swift3.0 自定义键盘
...绕了一大圈,又绕回原生来了,今天,学习一下swift3.0语法下的自定义键盘.效果图如下: 其实,很简单,只需要把UITextView(或者UITextField)的inputView属性设置为 ...
- vue教程2-08 自定义键盘信息、监听数据变化vm.$watch
vue教程2-08 自定义键盘信息 @keydown.up @keydown.enter @keydown.a/b/c.... 自定义键盘信息: Vue.directive('on').keyCode ...
随机推荐
- Android Studio 学习 - HelloWorld
今天是学习Android Studio的第2天,加油! 1. 首先要记录下使用Android Studio的一个代码自动完成的功能.平常基本上用Delphi,乍一换工具,各种不习惯,或者说不熟悉.按照 ...
- SOAP+WSDL
一 SOAPSOAP最开始是用作RPC机制的,后来XML的出现使其应用非常广泛.它与HTTP一样是一种应用级协议,使用他可以在不同的应用程序之间进行数据交换.SOAP可以基于HTTP,也可以基于HTT ...
- .CO域名快被这帮搞IT的玩坏了……
鉴于近来国内访问Google的服务受阻,greatfire.org于前天推出了其基于亚马逊AWS的Google搜索镜像网站,地址是sinaapp.co.该网站随后因多家海外媒体的报道和众多微博大V的转 ...
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...
- JS面向对象组件(四) -- 面向对象的继承
什么是继承 •在原有对象的基础上,略作修改,得到一个新的对象 •不影响原有对象的功能 //父类 createPerson function createPerson(name,sex){ this.n ...
- 树莓派 安装 php
执行如下命令(注意红色字部分是关键!) sudo apt-get install apache2 php5 libapache2-mod-php5 然后把网页文件复制到 /usr/www 中即可 参考 ...
- ubuntu 安装AMP环境的笔记 Prefork方式与fast-cgi方法
具体步骤如下: 系统:ubuntu 8.04 的发行版本 AMP with Prefork(mod-php5) 一.安装APACHE2 # sudo apt-get install ...
- android 带边框的圆角按钮
新建buttonstyle.xml 代码如下 <?xml version="1.0" encoding="UTF-8"?> <layer-li ...
- Yii入门,登录
验证和授权在页面需要限制访问时用到.验证就是确认某人就是他所声称的那个人.通常涉及到用户名和密码,但也包含其他方式,例如智能卡,指纹等.授权是在验证用户后,查明他是否被允许管理指定的资源.通常判断他是 ...
- 360网站卫士推出google字体加速方案
最近,有网友反映称谷歌官网域名google.com.谷歌香港google.com.hk都打不开, ping了一下google.com和google.com.hk两个域名的服务器情况,最后ping出来的 ...