13-UI进阶(事件处理)

控制器的切换方式——Modal

  • 任何控制器都能通过Modal的形式展示出来
  • Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止

iOS开发中的触摸事件

  • 默认的UIView是不能进行多指触控操作的,需要修改UIView的属性才可以
  • iOS开发中应避免使用双击事件

重写hitTest方法

  • 默认子控件不在父控件上是不能进行点击的,所以需要重写hitTest方法实现点击效果

事件传递

  • touchesBegan的默认做法是把事件传递给上一个响应者(默认是父控件),当上一个响应者为控制器时,应交由控制器处理

手势识别器——UIGestureRecognizer

  • 手势识别的代理方法,要遵守UIGestureRecognizerDelegate协议
// 是否允许开始触发手势
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    return NO;
}

// 是否允许同时支持多个手势,默认是不支持多个手势
// 返回yes表示支持多个手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

// 是否允许接收手指的触摸点
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    // 获取当前的触摸点
    CGPoint curP = [touch locationInView:self.imageView];
    
    if (curP.x < self.imageView.bounds.size.width * 0.5) {
        return NO;
    }else{
        return YES;
    }
}

自动提示宏

  • 宏的操作原理,每输入一个字母就会直接把宏右边的拷贝,并且会自动补齐前面的内容
// 宏里面的#,会自动把后面的参数变成C语言的字符串
#define keyPath(objc,keyPath) @(((void)objc.keyPath,#keyPath))

NSLog(@"%@",[keyPath(_mainV, frame) class]);

抽屉效果

  • 利用KVO时刻监听mainV的frame属性的改变
    // 利用KVO时刻监听mainV的frame属性
    // Observer:观察者 谁想监听
    // KeyPath:监听的属性
    // options:监听新值的改变
    [_mainV addObserver:self forKeyPath:keyPath(_mainV, frame) options:NSKeyValueObservingOptionNew context:nil];

// 只要监听的属性一改变,就会调用观察者的这个方法,通知你有新值
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"%@",NSStringFromCGRect(_mainV.frame));
    if (_mainV.frame.origin.x > 0) { // 往右边移动,隐藏蓝色的view
        _rightV.hidden = YES;
    }else if (_mainV.frame.origin.x < 0){ // 往左边移动,显示蓝色的view
        _rightV.hidden = NO;
    }
}

// 在对象销毁的时候,一定要注意移除观察者
- (void)dealloc
{
    // 移除观察者
    [_mainV removeObserver:self forKeyPath:@"frame"];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容