自定义我的封装键盘,并在试图控制器里对接 (解决多 输入框问题,把输入框存入到可变数组)

@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:自定义键盘的实现的更多相关文章

  1. UI:登录窗的自定义键盘

    在创建一个自定义键盘的时候遇到的错误 //双重for循环,对于Button上的数字用二维数组 //    NSArray * butArr[4][3] = {@[@"1",@&qu ...

  2. WPF 自定义键盘焦点样式(FocusVisualStyle)

    WPF 自带的键盘焦点样式是与传统控件样式搭配的,但 WPF 凭着其强大的自定义样式的能力,做出与传统控件样式完全不同风格的 UI 简直易如反掌.这时,其自带的键盘焦点样式(FocusVisualSt ...

  3. 【iOS自定义键盘及键盘切换】详解

    [iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...

  4. 原生HTML5 input type=file按钮UI自定义

    原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度 ...

  5. ios 自定义键盘

    由于项目需要,需要自定义键盘.ios系统键盘会缓存键盘输入,并保存在系统目录下的文件里,并且是明文存储,存在帐号密码泄漏风险.在别人代码基础上修改了下,美化了下界面,去掉了字符输入,加了点击特效,截图 ...

  6. Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器

    组件模板: 之前: <template> <h3>我是组件</h3><strong>我是加粗标签</strong> </templat ...

  7. vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

    一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 ...

  8. swift3.0 自定义键盘

    ...绕了一大圈,又绕回原生来了,今天,学习一下swift3.0语法下的自定义键盘.效果图如下: 其实,很简单,只需要把UITextView(或者UITextField)的inputView属性设置为 ...

  9. vue教程2-08 自定义键盘信息、监听数据变化vm.$watch

    vue教程2-08 自定义键盘信息 @keydown.up @keydown.enter @keydown.a/b/c.... 自定义键盘信息: Vue.directive('on').keyCode ...

随机推荐

  1. ecshop 优化_将商品详情页goods.php重命名为shangpin.php

    有人说,将商品详情页的文件名 goods.php 改一个名字,对百度收录会有帮助,也许吧,这里不讨论是否有帮助,这里只讲解如何重命名. 例如:我们将 goods.php 改为 shangpin.php ...

  2. ecshop 点购物车弹出提示框

    1.找到common.js在最下面输入以下代码 * 点击购物后弹出提示层 * Chen 2010.7.28 * 参数 cartinfo:购物车信息 */function openDiv_chen(ca ...

  3. 【英语】Bingo口语笔记(49) - 春节请客吃饭的表达

  4. 免费的WebService

    天气预报Web服务,数据来源于中国气象局 Endpoint :     http://www.webxml.com.cn/WebServices/WeatherWebService.asmx Disc ...

  5. Oracle时间函数numtoyminterval()

    格式:NumToYMInterval(n, interval_unit); n: 数值类型 interval_unit: 'YEAR', 'MONTH' ,或其他可以转换成这两个值之一的表达式   N ...

  6. 【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)

    原文网址:http://www.cnblogs.com/Realh/archive/2010/10/10/1847251.html 前两天在Windows下成功地搭好了一个Python开发环境,这次转 ...

  7. Linux makefile教程之隐含规则九[转]

    隐含规则 ———— 在 我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o] 文件,Windows下是[.o ...

  8. 抛弃EF,20分构建一个属于自己的ORM框架

    Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11  文章 - 0  评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...

  9. web开发利器 fiddler

    http://mccxj.github.io/blog/20130531_introduce-to-fiddler.html

  10. java webservice AXIS

    1. eclipse axis 插件下载地址   http://archive.apache.org/dist/ws/axis2/tools/1_4_1/ 一个是代码生成插件   axis2-ecli ...