原文地址:给键盘加上UITextField
http://www.aisidechina.com/forum/viewthread.php?tid=914
效果:
.h文件:
#import <UIKit/UIKit.h>@interface ScoreBar : UIToolbar { UITextField *nameTextField; UILabel *scoreLabel;}@property (nonatomic, retain) UITextField *nameTextField; //toolbar上的输入框@property (nonatomic, retain) UILabel *scoreLabel; //toolbar上的按钮-(void)keyboareWillShow:(NSNotification*)aNotification; //键盘将要出现时调用@end.m文件
#import "ScoreBar.h"@implementation ScoreBar@synthesize nameTextField;@synthesize scoreLabel;- (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // Initialization code self.hidden = YES; self.tintColor = [UIColor grayColor]; /* 初始化toolbar上的textField和button */ ......略 /* 设定UIKeyboardWillShowNotification调用的方法 */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboareWillShow:) name:UIKeyboardWillShowNotification object:nil]; } return self;}- (void)drawRect:(CGRect)rect { [super drawRect:rect];//调用父类的方法,这个一定要写 // Drawing code}- (void)dealloc { .......}-(void)keyboareWillShow:(NSNotification*)aNotification{ /* 取得键盘的frame */ NSDictionary *info = [aNotification userInfo]; NSValue *aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey]; CGRect frame; [aValue getValue:&frame]; //设定toolbar的frame self.frame = CGRectMake(frame.origin.x, frame.origin.y-44, frame.size.width, 44); UIWindow *tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; UIView *keyboard; /*遍历windwos中所有的view,取得键盘view*/ for(int i = 0;i<tempWindow.subviews.count;i++){ keyboard = [tempWindow.subviews objectAtIndex:i]; if([[NSString stringWithUTF8String:object_getClassName(keyboard)] isEqualToString:@"UIKeyboard"]){ self.hidden = NO; [keyboard addSubview:self]; [keyboard setBackgroundColor:[UIColor blackColor]]; } }}@end初始化toolbar:
ScoreBar *scoreBar = [[ScoreBar alloc] initWithFrame:CGRectMake(0, 0, 480, 44)];scoreBar.nameTextField.delegate = self;使用becomeFirstResponder调出键盘:
[scoreToolBar.nameTextField becomeFirstResponder];