美文网首页
13-UI进阶(事件处理)

13-UI进阶(事件处理)

作者: 木喳喳的夏天 | 来源:发表于2016-03-25 11:34 被阅读24次

控制器的切换方式——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"];
}

相关文章

  • 13-UI进阶(事件处理)

    控制器的切换方式——Modal 任何控制器都能通过Modal的形式展示出来 Modal的默认效果:新控制器从屏幕的...

  • React进阶-事件处理

    React元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同: !React事件绑定属性的命名采用驼峰式...

  • 进阶篇:jQuery事件(21-1)

    饥人谷学习进阶第 21 天 事件处理最头疼的问题:浏览器兼容问题jQuery封装了很好的API,方便进行事件处理 ...

  • CoreText进阶(三)-事件处理

    本文的内容主要见到的是如何使用CoreText设置高亮的内容的特殊效果,比如带有特殊颜色和下划线的链接。以及这些高...

  • UI进阶05——事件处理

    事件处理 触摸事件 iOS中的事件?在用户使用app过程中,会产生各种各样的事件。iOS中的事件可分为3大类型:触...

  • React 深入系列5:事件处理

    文:徐超,《React进阶之路》作者 授权发布,转载请注明作者及出处 React 深入系列5:事件处理 React...

  • UGUI(三)【唐老狮】事件监听接口,事件触发器,一些重要功能实

    UGUI进阶 UI事件监听接口解决问题提供一些进阶事件监听功能常用事件接口IPointEnterHandler鼠标...

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • Java进阶

    注:采转归档,自己学习查询使用 Java进阶01 String类Java进阶02 异常处理Java进阶03 IO基...

网友评论

      本文标题:13-UI进阶(事件处理)

      本文链接:https://www.haomeiwen.com/subject/nszrlttx.html