OC 事件处理的两种方式

addTarget 点击方式

  • 继承 UIController 的拥有addTarget点击事件
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    button.backgroundColor = [UIColor yellowColor];
    button.titleLabel.text = @"按钮";
    [self.view addSubview:button];
    [button addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
//按钮触发事件
-(void)btnClick:(UIButton *)button{
    NSLog(@"点击事件");
}
  • 代理 协议
<UIScrollViewDelegate>  //遵守协议
    UIScrollView *scrollVC = [[UIScrollView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-100, self.view.frame.size.height/2-100, 200, 200)];
    
    [self.view addSubview:scrollVC];
    
    //设置代理 遵守协议
    scrollVC.delegate = self;
// ScrollView 即将开始拖拽的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    NSLog(@"即将开始拖拽");
}

// ScrollView 用户即将停止拖拽
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
    NSLog(@"用户即将停止拖拽");
}
  • 部分UI 两种方式都有
<UITextFieldDelegate>
    //TextView 文本输入   监听事件可以通过  代理 或者 addTarget  两种方式
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 300, 200, 30)];
    textField.backgroundColor = [UIColor whiteColor];
    textField.delegate = self;
    [textField addTarget:self action:@selector(tfRditingDidBegin) forControlEvents:UIControlEventEditingDidBegin];
    [textField addTarget:self action:@selector(tfRditingDidEnd) forControlEvents:UIControlEventEditingDidEnd];
    [textField addTarget:self action:@selector(tfRditingDidChanged) forControlEvents:UIControlEventEditingChanged];
    
    [self.view addSubview:textField];
  1. 代理
// textField开始编辑
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    NSLog(@"开始编辑");
}

// textField结束编辑
- (void)textFieldDidEndEditing:(UITextField *)textField{
    NSLog(@"结束编辑");
}

// textField文字改变
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    NSLog(@"用户输入的文字%@",string);
    NSLog(@"代理方式监听文字发生改变");
    return YES;  //YES允许用户输入  NO禁止用户输入
}


// 点击空白收起键盘
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self.view endEditing:YES];
    // [self.textField resignFirstResponder];
    // [self.textField endEditing:YES];
}
  1. addTarget方式
-(void)tfRditingDidBegin{
    NSLog(@"这是点击事件监听的开始编辑");
}
-(void)tfRditingDidEnd{
    NSLog(@"这是点击事件监听的结束编辑");
}
-(void)tfRditingDidChanged{
    NSLog(@"这是点击事件监听的文字修改");
}
  • 顶部选择器
    UISegmentedControl *s = [[UISegmentedControl alloc]initWithItems:@[@"123",@"456",@"789"]];
    s.center = CGPointMake(self.view.frame.size.width/2, 260); //位置
    s.selectedSegmentIndex = 1; //默认选中第几个
    [s addTarget:self action:@selector(sClick:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview: s];
//顶部选择器触发事件
-(void)sClick:(UISegmentedControl *)s{
    NSLog(@"%d",s.selectedSegmentIndex);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值