以前,網上一個朋友問我如何直接使用代碼在一個自定義中的UIView中收鍵盤。糾結了一段時間後,想到了兩種方法。一種方式是在UIView上面添加一個UIControl,經過點擊屏幕收鍵盤,這種方式我以爲能稍微的簡單一點。另外一種方法是實現UITextFieldDelegate協議中的方法,直點擊換行鍵(Return)收鍵盤。下面我就先說下比較簡單的。(聲明我這個例子實在一個自定義的UIView中插入的UITextField對象,而後UIView將再viewController中,自定義的UIView類名爲 @class myView )第一種方法,
@interface myView : UIControl<UITextFieldDelegate> ios
//因爲要實現UITextFieldDelegate中的-(BOOL)textFieldShouldReturn:(UITextField *)textField app
{ ide
UITextField * textfield; ui
} atom
@property(nonatomic,retain)UITextField * textfield; spa
@end .net
@synthesize textfield; code
- (id)initWithFrame:(CGRect)frame 對象
{ blog
self = [superinitWithFrame:frame];
if (self) {
// Initialization code
self.backgroundColor=[UIColorwhiteColor];
textfield=[[UITextFieldalloc]initWithFrame:CGRectMake(40,50,150,30)];
textfield.delegate=self;//因爲textfield須要一個對象實現本身協議中的方法,因此委託給當前這個myView的類來實現協議中的方法
[textfieldsetBackgroundColor:[UIColorgrayColor]];
[self addSubview:textfield];
}
return self;
}
#pragma mark deal with textFieldDelegate & 收鍵盤處理
- (BOOL)textFieldShouldReturn:(UITextField *)textField//這個就是以前說的那個協議方法,只要調用了這個方法就能實現收鍵盤了
{
[textField resignFirstResponder];
return YES;
}
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
下面是第二種發法。在UIView中直接添加一個與屏幕等大小的UIControl對象,而後爲這個UIControl對象實現簡單點擊事件。
這裏仍是引用以前的那段代碼- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
// 第二種方法------add by Grozy
UIControl * uiCtrl=[[UIControlalloc]initWithFrame:CGRectMake(0,0,320,640)];// 320 和 640是ios的屏幕大小
//點擊背景收鍵盤
[uiCtrladdTarget:selfaction:@selector(tapBackground)forControlEvents:UIControlEventTouchUpInside];
[selfaddSubview:uiCtrl];
// 第二種方法 --------end
self.backgroundColor=[UIColorwhiteColor];
textfield=[[UITextFieldalloc]initWithFrame:CGRectMake(40,50,150,30)];
textfield.delegate=self;//因爲textfield須要一個對象實現本身協議中的方法,因此委託給當前這個myView的類來實現協議中的方法
[textfieldsetBackgroundColor:[UIColorgrayColor]];//若是不設置會看不見的
[self addSubview:textfield];
}
return self;
}
-(void)tapBackground
{[self.textfieldresignFirstResponder];
}