ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IOS-textfield textview

2019-09-20 11:43:11  阅读:448  来源: 互联网

标签:UITextView ViewController IOS UITextViewDelegate textView textfield IBOutlet UIT


原文链接:https://blog.csdn.net/weixin_36709064/article/details/89256779

原文链接:https://blog.csdn.net/weixin_36709064/article/details/89256779

1、介绍

UITextView显示多行文本视图,接受编辑输入,类似于文本编辑器,获取焦点的时候会从底部弹出软键盘输入

UITextField类似输入框,比如可用作search输入框,接受文本输入,获取焦点的时候会从底部弹出软键盘输入

2 Delegate
Delegate委托协议,有点类似于对接口类的实现,比如Android中Activity实现View.OnClickListener,当有Class实现了View.OnClickListener,那么就需要实现其接口方法onClick(View v),这里Delegate中也会存在相应的回调函数,比如UITextViewDelegate和UITextFieldDelegate各字都有自己可回调的函数。这是通过协议的方式给视图添加回调是IOS的特色。
 

3 UITextView 和 UITextViewDelegate
要给UITextView添加响应事件可以通过UITextViewDelegate协议来进行,那么怎样将UITextView的响应事件同UITextViewDelegate的回调函数相关连起来呢?注意如果不关联是无法回调到对应的函数的。
 3.1 Interface Builder实现

通过在xcode中拖拽。

见鼠标放在UITextField或者UITextView,右键点击(mac触摸板是双指点击)弹出对话框,选择delegate,将光标点按在后面⭕️上,这时候⭕️中间会出现一个“+”,然后拖拽到右边的View Controller上,这时候View Controller上会有一个蓝色这框表示它被选中了,然后松手
 

经过上面操作,弹出的选项对话框delegate选项后面的空心圆圈就变成实心了,如下图,表示delegate和View Controller建立了绑定关系

上面用的是UITextField做的例子,UITextView是相同操作

源码代码如下

#import "ViewController.h"
 
@interface ViewController ()<UITextFieldDelegate, UITextViewDelegate>
 
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIButton *button;
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
 
 
#pragma mark -- 实现 UITextViewDelegate委托协议中一个方法,当UITextView中文字输入有变化的时候会被调用
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    
    NSLog(@"textView 被调用了,变化的部分是 %@", text);
 
    return YES;
}
 
@end
3.2 通过代码添加

上面掩饰了通过非代码的方式让UITextView 和 UITextViewDelegate相关联,然后UITextViewDelegate中的某一个回调函数被调用了,下面将通过代码的方式将让UITextView 和 UITextViewDelegate相关联,

 

1)首先取消掉UITextView 和 UITextViewDelegate的的关系

选中Main.storyboard中的TextView,mac触摸板双指点击弹出如下选择框,点击红色小框中的X,取消掉绑定关系
 

 

2)在代码中添加UITextView 和 UITextViewDelegate的关联关系

这句话将UITextView和UITextViewDelegate协议关联:self.textView.delegate = self;

可以前后做一下对比实验,去掉这句话之后看在控制台是否有对应的输出。
  
#import "ViewController.h"
 
@interface ViewController ()<UITextFieldDelegate, UITextViewDelegate>
 
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet UITextField *textField;
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    forControlEvents:UIControlEventTouchDown];
    self.textView.delegate = self;//这句话将UITextView和UITextViewDelegate协议关联
    self.textField.delegate = self;//这句话将UITextField和UITextFieldDelegate协议关联
}
 
#pragma mark -- 实现 UITextViewDelegate委托协议中一个方法,当UITextView中文字输入有变化的时候会被调用
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    NSLog(@"textView 被调用了,变化的部分是 %@", text);
    return YES;
}
 
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    NSLog(@"UITextField retrun 按键被调用了");
    return YES;
}
 
@end

 

4  Button的点击事件

4.1 添加UIButton并添加引用

那么在IOS开发中使用OC是怎么给一个UIView添加事件的呢?

1)在故事板中添加一个UIButton 

2)然后在ViewController.m中添加UIButton的引用

方式一

先在代码中手写@property (weak, nonatomic) IBOutlet UIButton *button;然后将其前面的小圆圈

这句话需要跟故事板中的Button绑定起来,通过拖拽的连线的方式,选中上面添加的代码前的小圆点到故事板中的button视图,如下图:
 

方式二

让xcode自动生成,按住control键,按照下图的箭头的路线拖拽到小框的位置,只要在@interface ViewController和@end之间即可,不一定非要是图中小红框标示的位置,然后在Name框后面输入,比如button,然后点击Connect按钮,就会自动生成方法一中手写的代码
 

下面是通过代码使用button

#import "ViewController.h"
 
@interface ViewController ()<UITextFieldDelegate, UITextViewDelegate>
 
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIButton *button;
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    [self.button addTarget:self action:@selector(onButtonClick) forControlEvents:UIControlEventTouchDown];
 
}
 
-(void)onButtonClick{
    NSLog(@"########## onButtonClick ");
}
 
@end
 

 

标签:UITextView,ViewController,IOS,UITextViewDelegate,textView,textfield,IBOutlet,UIT
来源: https://blog.csdn.net/manmanlu2006/article/details/101053783

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有