1、新建一个single view application
2、在storyboard拖两个label、一个textField和一个textView,其中textField属性中的Placeholder为默认提示语,属性Clear Button为一键清除按钮
3、在ViewController.h中加入委托协议:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITextFieldDelegate, UITextViewDelegate>
@end
4、通过Interface Builder把委托对象ViewController分配给textField和textView控件的委托属性delegate,分别在textField和textView控件上点右键,鼠标拖动Outlets->delegate后面的小圆点到ViewController上
5、在ViewController.h中加入代码,通过委托放弃第一响应者,以及关闭和打开键盘的通知:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
#pragma mark - UITextField Delegate Method
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
#pragma mark - UITextView Delegate Method
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
- (void) viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidShow:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidHide:)
name:UIKeyboardDidHideNotification object:nil];
[super viewWillAppear:animated];
}
- (void) viewDidDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];
[super viewDidDisappear:animated];
}
- (void) keyboardDidShow: (NSNotification *)notif {
NSLog(@"打开键盘");
}
- (void) keyboardDidHide: (NSNotification *)notif {
NSLog(@"关闭键盘");
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
6、关于模拟器无法弹出键盘:command + shift + k 切换系统键盘和模拟器键盘