iOS_8_键盘的简单处理

最终效果图:

BeyondViewController.h

//
//  BeyondViewController.h
//  9_键盘的简单处理
//
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <span style="font-family: Arial, Helvetica, sans-serif;"><UIKit/UIKit.h></span>

@interface BeyondViewController : UIViewController
- (IBAction)exitKeyboard:(UIButton *)sender;

@end

</uikit>

BeyondViewController.m

//
//  BeyondViewController.m
//  9_键盘的简单处理
/*
    存在的问题:
    1,弹出的键盘可能会遮住界面上的控件,解决方法:使用scrollView,或,动态减少控件的Y值(使之上移)
    2,toolBar上面的两个按钮的点击事件,还没有实现
 */
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondViewController.h"

@interface BeyondViewController ()
{
    // 键盘上面的附属工具条
    UIToolbar *_toolBar;
}
@end

@implementation BeyondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 为所有键盘上面添加工具条
    [self addToolBarForKeyboard];
}
// 为所有键盘上面添加工具条
- (void)addToolBarForKeyboard
{
    // mainBundel加载xib,扩展名不用写.xib
    NSArray *arrayXibObjects = [[NSBundle mainBundle] loadNibNamed:@"KeyToolBar" owner:nil options:nil];
    // 键盘附属工具条
    _toolBar = arrayXibObjects[0];
    // 为self.view内部的所有文本输入框设置toolBar
    NSArray *array = self.view.subviews;
    for (UIView *obj in array) {
        if ([obj isKindOfClass:[UITextField class]]) {
            // 为什么要强转,因为UIView的属性 inputAccessoryView 是readOnly
            UITextField *obj2 = (UITextField *)obj;
            obj2.inputAccessoryView = _toolBar;
        }
    }

    // 为toolBar中的第1个UIToolbarTextButton(上一个按钮)添加点击事件
    //[[_toolBar.subviews firstObject] addTarget:self action:@selector(previousKeyboard:) forControlEvents:UIControlEventTouchUpInside];

    // 为toolBar中的第2个UIToolbarTextButton(下一个按钮)添加点击事件
    //[[_toolBar.subviews objectAtIndex:2] addTarget:self action:@selector(nextKeyboard:) forControlEvents:UIControlEventTouchUpInside];

    // 为toolBar中的最后一个UIToolbarTextButton(完成按钮)添加点击事件
    [[_toolBar.subviews lastObject] addTarget:self action:@selector(exitKeyboard:) forControlEvents:UIControlEventTouchUpInside];
}
// toolBar里面,点击上一个按钮
- (void)previousKeyboard:(UIButton *)sender
{
    NSLog(@"点击了上一个按钮,要激活上一个输入框");
}
// toolBar里面,点击下一个按钮
- (void)nextKeyboard:(UIButton *)sender
{
    NSLog(@"点击了下一个按钮,要激活下一个输入框");
}

// 退出键盘
- (IBAction)exitKeyboard:(UIButton *)sender {
    // 方式1: self.view内部所有的文本框(包括子孙控件...)都退出第一响应者
    [self.view endEditing:YES];
    return;

    // 方式2:
    // 遍历uiview里面所有的控件 ,resignFirstResponder
    /*
        for (int i=0; i<self.view.subviews.count; i++) {
            [self.view.subviews[i] resignFirstResponder];
        }
     */
    NSArray *array = self.view.subviews;
    for (UIView *obj in array) {
        if ([obj isKindOfClass:[UITextField class]]) {
            [obj resignFirstResponder];
        }
    }

    // 方式3:
    // 在self.view的最开头,铺一个全屏的透明的按钮,连线,只要在屏幕空白区域点击后,就可以调用上面的方式1,退出键盘

}

@end

KeyToolBar.xib

iOS_8_键盘的简单处理

时间: 2024-08-13 00:59:18

iOS_8_键盘的简单处理的相关文章

开发进阶11_代理设计模式_键盘的简单处理

代理设计模式: 1.使用场合 -> A想让B帮忙做一些事情,就让B成为A的代理 ->A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理 ->B想监听A所做的一些事情,就让B成为A的代理 2.使用步骤 ->定义一份协议 ->B要遵守协议,实现相应的方法 ->A中要定义一个代理属性,id<协议> delegate ->创建B对象,设置A的delegate属性为B对象 键盘的简单处理: TextField:keyborad type属性

2015 IOS 键盘回收——在蓝懿教育

方法一: //1, 关闭键盘 [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 想必大家都遇到过一个view上好多输入框,为了关闭弹出的软键盘要遍历然后调用resignFirstResponder的吧?今天竟然发现一个关键这个view上可能      打开的键盘很简单:[self.view endEditing:YES]; 直接ok了. 方法二: //2, 关闭键盘 [[self findFirstResponderB

[转]软键盘用法总结

软键盘用法 在Android开发中,软键盘是一个比较常用的了.总结下来,再也不用去网上搜资料了. 1.软键盘原理 在android中,软键盘原理上是一个dialog,InputMethodService为我们的输入法创建了一个Dialog,并且对某些参数进行了设置,使之能够在底部或者全屏显示.当我们点击输入框时,系统会对当前的主窗口进行调整,以便留出相应的空间来显示该Dialog在底部,或者全屏. 2.如何显示和隐藏软键盘 2.1显示软键盘 方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验七:PS/2模块① — 键盘

实验七:PS/2模块① — 键盘 实验七依然也是熟烂的PS/2键盘.相较<建模篇>的PS/2键盘实验,实验七实除了实现基本的驱动以外,我们还要深入解PS/2时序,还有PS/2键盘的行为.不过,为了节省珍贵的页数,怒笔者不再重复有关PS/2的基础内容,那些不晓得的读者请复习<建模篇>或者自行谷歌一下. 市场上常见的键盘都是应用第二套扫描码,各种扫描码如图7.2所示.<建模篇>之际,笔者也只是擦边一下PS/2键盘,简单读取单字节通码与断码而已.所谓单字节通码,就是有效的按下

关于SnackBar被键盘挡住的解决方案

snackbar比toast好看多了,所以新的app我把所有的toast都替换成了snackbar. 但是问题也随之而来,我在登录注册等需要用到键盘的地方,如果我没手动关闭键盘,那snackbar就会被键盘给挡住,导致用户看不到相应的提示. 对此有以下两个解决办法: 1.在用户点击提交的时候关闭键盘 关于关闭键盘,android没有直接提供给我们方法提供,可以使用如下方法 /** * 关闭键盘 */ @RequiresApi(api = Build.VERSION_CODES.JELLY_BEA

C开发 中原子性操作 , 除了快什么都不剩下了

题外话 今天,听歌曲听到一首缅怀迈克尔·杰克逊的歌曲 如下: http://music.163.com/#/song?id=1696048  Breaking News 每次听迈克尔 音乐,特别有战斗力,特别兴奋,学起技术来也特别带感,推荐喜欢的人试试. #include <stdio.h> int man(int argc, char* argv[]) { printf("Hope you are better %s\n","Michael Jackson&qu

iOS开发——完整项目实战OC篇&amp;百思不得姐第六天

百思不得姐第六天 上午 一:使用Xib加载View 一般我们直接在分类里面,因为Xib加载的代码都是一样 二:键盘的两个常见属性 inoutAccessoryView inputView 三:切换系统和自定义键盘的简单使用方式,是不是很变态 根据使用的键盘判断类型并且切换 四:使用动画的方式,其实就是设置切换的时间就可以了 五:特殊需求,直接总定义并且添加View(不使用inoutAccessoryView) 使用通知实现工具条跟着键盘的移动:(上移键盘的高度) 1:改变Y值,上下改变Y值->使

基本输入输出系统BIOS

基本输入输出系统BIOS概述 硬盘操作系统DOS建立在BIOS的基础上,通过BIOS操纵硬件,例如DOS调用BIOS显示I/O程序完成输入显示,调用打印I/O完成打印输出 通常应用程序应该调用DOS提供的系统功能完成输入输出或者其他操作,这样做不仅容易实现,而且对硬件依赖性最少,但是有时候DOS不提供某种服务,因此就不能利用DOS实现 也就是说,BIOS比DOS更加接近于硬件 键盘输入: 键盘中断处理程序 当用户按键时,键盘接口上会得到一个代表被按键的键盘的扫描码,同时产生一个中断请求,如果中断

如何给开源的DUILib支持Accessibility(论述了DUILib的六个缺点,很精彩)

最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软件要出口欧美,Accessibility是必须的, 不然国外正规单位(政府,学校,大公司等)是禁止采购的. 如果我们的软件用的是Winodws标准控件,一般Accessibility是系统默认内置支持的 (当然这也不是一定的,据我测试系统的Date Time Picker控件是不支持MSAA的).因