zoukankan      html  css  js  c++  java
  • iOS开展——全球应对MotionEvent

    遇到这样的要求:无论在哪个应用程序view controller,摇动手机,我们可以启动的方法。

    你可以认为这个想法是使用包装的苹果“MotionEvent”。但是,假如简单地把代码添加到view controller于,所以只存在view controller示在前端时,摇动手机才会出发方法。

    - (BOOL)canBecomeFirstResponder {//默认是NO,所以得重写此方法,设成YES
         return YES;
    }
    
    然后实现下列方法://非常像TouchEvent事件
     
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
    }
     
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
        NSLog(@"shake");
    }
     
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
    }

    解决方法:用Category扩展UIWindow。代码例如以下:

    UIWindow+.h

    #import <UIKit/UIKit.h>
    
    
    #define UIEventSubtypeMotionShakeNotification @"UIEventSubtypeMotionShakeNotification"
    
    
    @interface UIWindow (Motion)
    
    // @override
    - (BOOL)canBecomeFirstResponder;
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    
    @end
    

    UIWindow+.m

    #import "UIWindow+.h"
    
    
    @implementation UIWindow (Motion)
    - (BOOL)canBecomeFirstResponder {//默认是NO,所以得重写此方法。设成YES
         return YES;
    }
    
    然后实现下列方法://非常像TouchEvent事件
     
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
    }
     
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
        NSLog(@"shake");
    }
     
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
    }
    
    @end

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    14-6 XShell连接远程服务器
    14-5 XManager工具安装
    14-4 本地私有化部署方案介绍
    14-3 阿里云域名购买及备案流程
    14-2 阿里云ECS服务器购买介绍
    13-7 Docker基本使用总结
    初识Redux-Saga
    React Native填坑之旅 -- FlatList
    React Native填坑之旅 -- 使用react-navigation代替Navigator
    React Native填坑之旅 -- 回归小插曲
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4885788.html
Copyright © 2011-2022 走看看