关于iOS不同类型键盘的切换

闲言少叙,立马入正题。。。

开发中用pickerView自定义的键盘与系统默认的键盘之间的切换。希望能帮到要用的朋友。。。

#import "ViewController.h"

@interface ViewController () <UITextViewDelegate, UITextFieldDelegate, UIPickerViewDelegate>

@property (weak, nonatomic) IBOutlet UITextField *textField;

@property (weak, nonatomic) IBOutlet UITextView *textView;

/** 自定义键盘 */

@property (nonatomic, strong) UIPickerView *pickerView;

/** 原因数组 */

@property (nonatomic, strong) NSArray *reasonArray;

@property (nonatomic, assign) BOOL isFirst;

@end

@implementation ViewController

- (IBAction)click:(id)sender {

[self.textField resignFirstResponder];

}

- (void)viewDidLoad {

[super viewDidLoad];

self.textView.delegate = self;

self.textField.delegate = self;

self.textField.inputView = self.pickerView;

}

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

[self.textField becomeFirstResponder];

}

- (void)viewDidDisappear:(BOOL)animated {

[super viewDidDisappear:animated];

[self.textField resignFirstResponder];

}

/*****************************************/

#pragma mark - UITextViewDelegate

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {

// 切换键盘

[self.textField resignFirstResponder];

self.textField.enabled = NO;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

[textView becomeFirstResponder];

});

return YES;

}

- (void)textViewDidBeginEditing:(UITextView *)textView {

self.textField.enabled = YES;

}

#pragma mark - UITextFieldDelegate

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

// 切换键盘

[self.textView resignFirstResponder];

self.textView.editable = NO;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

[textField becomeFirstResponder];

});

if (_isFirst) {

[self pickerView:self.pickerView didSelectRow:0 inComponent:1];

_isFirst = NO;

}

return YES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField {

self.textView.editable = YES;

}

// 不允许用户输入

- (BOOL)texttitleField:(UITextField *)texttitleField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

return NO;

}

/*******************切换键盘**********************/

#pragma mark - UIPickerViewreasonArraySource

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

return 1;

}

// 行数

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

return self.reasonArray.count;

}

#pragma mark - UIPickerVeiwDelegate

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

return self.reasonArray[row];

}

// 选中某一行

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

self.textField.text = self.reasonArray[row];

}

#pragma mark - 懒加载

- (UIPickerView *)pickerView {

if (!_pickerView) {

_pickerView = [[UIPickerView alloc] init];

_pickerView.backgroundColor = [UIColor lightGrayColor];

//        _pickerView.backgroundColor = [UIColor whiteColor];

_pickerView.delegate = self;

}

return _pickerView;

}

- (NSArray *)reasonArray {

if (!_reasonArray) {

_reasonArray = @[@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311",@"121313311"];

}

return _reasonArray;

}

时间: 2024-11-03 22:33:11

关于iOS不同类型键盘的切换的相关文章

iOS键盘中英文切换键盘高度获取通知方法

iOS键盘中英文切换键盘高度获取通知方法, 有需要的朋友可以参考下. 注册通知 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotific

Xamarin iOS教程之键盘的使用和设置

Xamarin iOS教程之键盘的使用和设置 Xamarin iOS使用键盘 在文本框和文本视图中可以看到,当用户在触摸这些视图后,就会弹出键盘.本节将主要讲解键盘的输入类型定义.显示键盘时改变输入视图的位置等内容. Xamarin iOS定制键盘的输入类型 键盘的类型不只一种,而是有很多种的.当用户要实现编辑一个联系人时,键盘就会随着所输入的内容不同而发生变化.例如当要输入联系人的电话号码时,键盘就变为数字键盘.在不同的地方使用不同类型的键盘,会使用户的操作变得简单.要定制键盘的显示类型其实很

ios动态获得键盘高度,并改变对话框的位置

NSNotificationCenter:键盘出现.消失时的通知 UIKeyboardWillShowNotification;UIKeyboardDidShowNotification;UIKeyboardWillHideNotification;UIKeyboardDidHideNotification; 在要使用键盘的视图控制器中(既viewDidLoad中),接收键盘事件的通知: - (void) registerForKeyboardNotifications{ //键盘改变时候会调用

《iOS应用逆向工程》学习笔记(四)iOS程序类型

越狱iOS中最常见的程序有Application, Dynamic Library和Daemon三类. 1.Application 除了传统意义上的App外,越狱iOS平台上还有两种App形式的存在:WeeApp(依附于NotificationCenter的App)和PreferenceBundle(依附于Settings的App),常见于Cydia平台. 普通App的bundle中存放的是可执行程序和所需资源,而framework的bundle中存放的是动态链接库. 主要关注App中的三个部分

iOS开发隐藏键盘方法总结

iOS开发里键盘是经常需要打交道的地方,下面为大家带来我整理总结的几种隐藏键盘的方法. 一.隐藏自身软键盘 当对于有多个UITextField控件都想通过点击“Return”来隐藏自身软键盘的情况,这时的最好办法是使用Did End on Exit事件.在点击软键盘右下角的“Return”按钮后,会触发该事件.该事件有一个sender参数表示当前文本框,这样便可以编写一个通用的事件处理方法(.m文件). - (IBAction)TextField_DidEndOnExit:(id)sender 

iOS: 让键盘消失的的4种方法

转自:http://leopard168.blog.163.com/blog/static/168471844201422121310352/ 在iOS app中,只要用到编辑框(UITextField)的地方,就得处理键盘消失 (dismiss keyboard). 我先后用过4种方法,来处理键盘消失的问题. 1. 通过UITextFiledDelegate,来释放第一响应者 (resignFirstResponder): 这种通过delegate释放键盘的代码如下: -(BOOL)textF

iOS TextField数字键盘的限制位数处理(特别适用于手机登陆)

Hi~大家好,这么长时间不和大家见面了,说来惭愧,最近忙于工作,已经很久没有写博客了, 接下来和大家分享一下在iOS下数字键盘限位的处理---好,废话不多说直接上代码 在用手机号登陆的时候大家有没有遇到这个问题? 就是一边想要输入到一定位数要限制输入,但是删除的时候还要能删除,今天小编遇到了这个问题,解决好半天,最终把它解决了,好了接下来给大家分享一下 相信大家都知道,输入框是用 UITextField的吧,其他的都不说了,要用textField的话实现代理方法,最重要的一点是设置他的键盘模式为

IOS开发隐藏键盘的4种方法

IOS开发隐藏键盘的4种方法 开发的app中常会用到键盘输入完成后隐藏键盘的情况.在此总结了4种方法来实现我们的目的. 方法一--delegate方式 第一种隐藏键盘的方法,称为delegate三步法: 1. 遵循(委托/代理); 2. 调用; 3. 关联头文件(ViewController.h)中遵循代理 . 代码如下: #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITextFieldDel

IOS关于UIViewController之间的切换

IOS关于UIViewController之间的切换 1.NavigationController切换UIViewController的两种方式 方法一右侧进入 1 SecondViewController* svc=[[SecondViewController alloc]init]; 2 [self.navigationController pushViewController:fvc animated:YES]; 返回到上一个 [self.navigationController popV