如何在ios中关闭自定义文本字段的键盘

时间:2013-06-26 08:00:36

标签: ios objective-c

我创建了uitextfield作为uiimageview&的子视图。 textfield和uiimageview都是scrollview的子视图。在编辑文本字段时隐藏键盘的方法是什么。 这里是我的代码,它不起作用。

{
   img1=[[UIImageView alloc]initWithFrame:CGRectMake(0, 1, 320, 60)];
   img1.userInteractionEnabled=YES;
   NSString *imgfilepath=[[NSBundle mainBundle]pathForResource:@"123" ofType:@"png"];
   UIImage *imo=[[UIImage alloc]initWithContentsOfFile:imgfilepath];
   [img1 setImage:imo];

   UILabel *label1;
   label1=[[UILabel alloc]init];
   label1.frame=CGRectMake(60, 0, 250, 30);
   label1.text=@"ENTER ANNUAL INCOME";
   label1.textColor=[UIColor blackColor];
   label1.font=[UIFont italicSystemFontOfSize:16.0f];

   label1.backgroundColor=[UIColor clearColor];
   [img1 addSubview:label1];


   principal = [[UITextField alloc] initWithFrame:CGRectMake(85,30, 156, 40)];
   principal.backgroundColor = [UIColor clearColor];
   principal.clearButtonMode = UITextFieldViewModeWhileEditing;
   principal.font = [UIFont systemFontOfSize:15.0f];
   principal.placeholder=@"ENTER";
   [principal setKeyboardType:UIKeyboardTypeNumberPad];
   //principal.textAlignment=UITextAlignmentCenter;

   [img1 addSubview:principal];

   [img1 respondsToSelector:[principal resignFirstResponder]];

   [scrollview addSubview:img1];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    [principal resignFirstResponder];

}

1 个答案:

答案 0 :(得分:1)

[img1 respondsToSelector:[principal resignFirstResponder]];

首先,respondsToSelector会返回BOOL,您可以使用它来确定是否可以调用选择器。这不是void方法,您似乎误解了这一点。

其次,UIImageView不响应resignFirstResponder

第三,你正在“传递”voidrespondsToSelector:,我很惊讶编译?

最终您要做的是在resignFirstResponder上致电UITextField,这可以通过致电[principal resignFirstResponder]来实现。

但是,解除键盘的最简单方法之一就是调用[self.view endEditing:YES],这被描述为......

  

使视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态。