IOS控件布局之常见控件点击事件

前言:

    还记得上次真正参与iOS项目开发是在2013年的九月份,一转眼2017年了,总来的来说有小三年没有真正做过iOS了,最近有幸又能够参与iOS项目开发了,作为一名24k纯金打造的iOS小菜鸟,希望自己能够在一年之后能够成为两端都会的那种工程师,希望自己以后更多的能够站在两端的维度上考虑问题,加油!万事开头难呀,但是学知识还是求甚解的态度来学习,今天先来总结一下这两天开发过程中控件事件处理。

UIButton添加事件

iOS中UIButton添加事件不像Android中那样直接设置一个onClickListener那样面向事件接口编程,iOS中的UIButton则是采用目标-动作的方式

 UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
 [btn setImage:[UIImage imageNamed:@"work_answer_edit_wrong"] forState:UIControlStateNormal];
 [btn addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
  • addTarget 指定接收事件的目标是谁 这里指定的是self 是我自己写的controller
  • action 指定具体的事件action 这里指定的是back返回操作
  • forControlEvents 指定事件发起的消息 这里指定的是UIControlEventTouchUpInside事件消息

具体的事件函数

-(IBAction)goBack:(id)sender{
    self.myBlock(self.str);
    [self.navigationController popViewControllerAnimated:YES];
}

UILabel添加事件

  在iOS开发中使用UILabel的频率非常高,它就相当于Android中TextView,有时候难免需要给UILabel添加事件处理,这个在Android中TextView可以像Button一样设置监听事件,但是在iOS中居然不能通过上述UIButton 那种直接采用目标-动作的模式添加事件,真不知道iOS怎么想的,哈哈,而选择通过手势的方式间接的实现目标-动作的模式传递事件。

   UILabel *tipLabel=[[UILabel alloc]init];
        tipLabel.text=@"所有年级";
        tipLabel.textColor=colorFromHex(@"#212121");
        tipLabel.font=[UIFont systemFontOfSize:15];
        tipLabel.userInteractionEnabled=YES;
        
        [tipLabel addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickLabelSelectClass)]];

具体action实现和上述UIButton的一致

-(void)clickLabelSelectClass
{
    NSLog(@"clickLabelSelectClass");
    self.gradeView.hidden=NO;
}

UIImageView添加事件

  UIImageView添加事件的方式和UILabel一致

UIImageView *selectImageView=[[UIImageView alloc]init];
        selectImageView.image=[UIImage imageNamed:@"login_init_addclass_select"];
        selectImageView.userInteractionEnabled = YES;//打开用户交互
        [selectImageView addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickImageViewSelectClass:)]];

action实现

-(void)clickImageViewSelectClass:(UIGestureRecognizer* )gestureRecognizer
{
    NSLog(@"clickImageViewSelectClass");
    self.gradeView.hidden=NO;
}

总结:

  作为一名资深小白发现自己学习的东西太多了。

 

posted on 2017-01-13 19:47  总李写代码  阅读(634)  评论(0编辑  收藏  举报