iOS 6常用控件之UITextField

全代码实现UITextField收键盘

之前,网上一个朋友问我如何直接使用代码在一个自定义中的UIView中收键盘。纠结了一段时间后,想到了两种方法。一种方式是在UIView上面添加一个UIControl,通过点击屏幕收键盘,这种方式我觉得能稍微的简单一点。另一种方法是实现UITextFieldDelegate协议中的方法,直点击换行键(Return)收键盘。下面我就先说下比较简单的。
(声明我这个例子实在一个自定义的UIView中插入的UITextField对象,然后UIView将再viewController中,自定义的UIView类名为 @class myView  )
第一种方法,


@interface myView : UIControl<UITextFieldDelegate>

//由于要实现UITextFieldDelegate中的-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

    UITextField * textfield;

}

@property(nonatomic,retain)UITextField * textfield;

@end


@synthesize textfield;

- (id)initWithFrame:(CGRect)frame

{

    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;

}


[plain]  view plain copy print ?
  1. <pre></pre>  
  2. <pre></pre>  
[plain]  view plain copy print ?
  1. <pre></pre>  
  2. <pre></pre>  
  3. <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的屏幕大小

 //点击背景收键盘

        [uiCtrl addTarget: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];

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值