UITextView - 6
2015-12-03 14:35
573 查看
上一篇章我们了解了inputAccessView的具体意义,那我们这里来了解一下inputView的作用。
默认的UITextView的inputView是系统键盘,如下:
![](https://img-blog.csdn.net/20151203142056280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当UITextView被触发成第一响应者的时候,就会弹出这个键盘。
当我们想着如果第一响应者触发出的并不是键盘的时候,我们会继承一个UITextView的子类并且重写这个属性,如下:
实现文件:
结果:
![](https://img-blog.csdn.net/20151203142807598?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这时候触发第一响应者就可以弹出我们自定义的UIPickerView啦。是不是很神奇咧。
上一篇章讲到,其实 inputView 和 inputAccessoryView 都是来自最底层的UIResponder类的,所以你还可以在UIView,UITableViewCell等等具备成为第一响应者触发能力的类去实现。当然有一些要做特别处理,例如单纯的UITableViewCell的 点击方法didSelect 方法并不完全等价于成为第一响应者,所以要重写 canBecomeFirstResponder 方法和手动去让它成为第一响应者 :[cell becomeFirstResponder] 等,具体问题具体分析啦!
参考:
http://www.360doc.com/content/14/0509/18/11029609_376170517.shtml http://www.cnblogs.com/worldtraveler/archive/2012/09/18/2691406.html
默认的UITextView的inputView是系统键盘,如下:
当UITextView被触发成第一响应者的时候,就会弹出这个键盘。
当我们想着如果第一响应者触发出的并不是键盘的时候,我们会继承一个UITextView的子类并且重写这个属性,如下:
#import <UIKit/UIKit.h> #pragma mark - Review the UITextView's property : inputView. @interface LBIViewTextView : UITextView <UIPickerViewDataSource, UIPickerViewDelegate> { UIPickerView* _inputView; } @property (nonatomic, strong, readwrite) UIPickerView* inputView; @end @interface LBInputViewController : UIViewController @property (nonatomic, strong) LBIViewTextView* myTextView; @end
实现文件:
#import "LBInputViewController.h" @implementation LBIViewTextView @synthesize inputView; //rewrite inputView property . - (UIPickerView* )inputView { if (!_inputView) { UIPickerView* pickView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 300, 200)]; pickView.delegate = self; pickView.dataSource = self; pickView.showsSelectionIndicator = YES; return pickView; } return _inputView; } - (BOOL)canBecomeFirstResponder { return YES; } - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } - (NSString* )pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [NSString stringWithFormat:@"%ld", (long)row]; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return 5; } - (void)dealloc { _inputView = nil; } @end #pragma mark - LBInputViewController - - - - - - - - - - @interface LBInputViewController () @end @implementation LBInputViewController - (void)viewDidLoad { [super viewDidLoad]; self.myTextView = [[LBIViewTextView alloc] init]; [self.myTextView setFrame:CGRectMake(0, 0, 300, 35)]; [self.myTextView setCenter:CGPointMake(self.view.center.x, self.view.center.y - 50)]; [self.myTextView setReturnKeyType:UIReturnKeyNext]; [self.myTextView setScrollEnabled:YES]; [self.myTextView setFont:[UIFont systemFontOfSize:18.0]]; [self.myTextView setAutoresizingMask:UIViewAutoresizingFlexibleHeight]; [self.myTextView.layer setBackgroundColor:[UIColor clearColor].CGColor]; [self.myTextView.layer setBorderColor:[UIColor lightGrayColor].CGColor]; [self.myTextView.layer setBorderWidth:1.0]; [self.myTextView.layer setCornerRadius:8.0f]; [self.myTextView.layer setMasksToBounds:YES]; [self.view addSubview:self.myTextView]; } @end
结果:
这时候触发第一响应者就可以弹出我们自定义的UIPickerView啦。是不是很神奇咧。
上一篇章讲到,其实 inputView 和 inputAccessoryView 都是来自最底层的UIResponder类的,所以你还可以在UIView,UITableViewCell等等具备成为第一响应者触发能力的类去实现。当然有一些要做特别处理,例如单纯的UITableViewCell的 点击方法didSelect 方法并不完全等价于成为第一响应者,所以要重写 canBecomeFirstResponder 方法和手动去让它成为第一响应者 :[cell becomeFirstResponder] 等,具体问题具体分析啦!
参考:
http://www.360doc.com/content/14/0509/18/11029609_376170517.shtml http://www.cnblogs.com/worldtraveler/archive/2012/09/18/2691406.html
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器