iOS開發之運動事件和遠端控制

2022-09-25 03:30:11 字數 3046 閱讀 3110

之前我們已經學習了觸控處理和手勢識別,其實這兩個同屬於ios事件的觸控事件,今天我們來學習下ios事件的另外兩個事件:程式設計客棧

一、運動事件

運動事件,是通過加速器進行觸發,和觸控事件一樣,繼承uiresponder類的物件才能處理運動事件

uiresponder處理運動事件的方法:

複製** **如下:

#pragma mark 運動開始時執行

- (void)motionbegan:(uieventsubtype)motion withevent:(uievent *)event;

#pragma mark 運動結束後執行

- (void)motionended:(uieventsubtype)motion withevent:(uievent *)event;

#pragma mark 運動被意外取消時執行

- (void)motioncancelled:(uieventsubtype)motion withevent:(uievent *)event;

你沒有看錯,這裡說的運動事件,只是搖晃一下手機而已,所以只有運動開始、運動結束、運動取消,無法取得運動過程中的運動速度、運動方向等資料,這些需要另外的框架去實現,我們可以理解這裡的運動時間為 「擺動事件」 。

監聽運動事件前提:

監聽物件必須成為第一響應者,控制項需要- (bool)canbecomefirstresponder方法返回yes

在檢視控制器的- (void)viewwillappear:(bool)animated方法中呼叫運動控制項的becomefirstresponder方法,使控制項顯示時成為第一響應者

在檢視控制器的- (void)viewdiddisappear:(bool)animated方法中呼叫運動控制項的resignfirstresponder方法,使控制項不顯示時登出控制項的第一響應者身份

例項:複製** **如下:

kcimageview.m

#import "kcimageview.h"

#define kimagecount 3

@implementation kcimageview

- (instancetype)initwithframe:(cgrect)frame

return self;

}#pragma mark 設定控制項可以成為第一響應者

- (bool)canbecomefirstresponder

#pragma mark 運動開始

- (void)motionbegan:(uieventsubtype)motion withevent:(uievent *)event

}#pragma mark 運動結束

- (void)motionended:(uieventsubtype)motion withevent:(uievent *)event

#pragma mark 隨機取得

- (uiimage *)getimage

@end

kcshakeviewcontroller.m

#import "kcshakeviewcontroller.h"

#import "kcimageview.h"

@inte***ce kcshakeviewcontroller ()

@end

@implementation kcshakeviewcontroller

- (void)viewdidload

#pragma mark 檢視顯示時讓控制項變成第一響應者

- (void)viewdidappear:(bool)animated

#pragma mark 檢視不顯示時登出控制項第一響應者的身份

- (void)viewdiddisappear:(bool)animated

@end

運動事件例項效果

二、遠端控制事件

ios遠端控制事件,是通過其他遠端裝置觸發的(比如耳機控制按鈕),ios遠端控制事件相關的只有-(void)remotecontrolreceivedwithevent:(uievent *)event

監聽遠端控制事件的前提:

啟動遠端事件接收,呼叫

[[uiapplication sharedapplication] beginreceivingremotecontrolevents];

ui控制項同樣要求必須成為第一響應者【使用參考運動事件】

但如果是檢視控制器或uiapplication,就沒有要求成為第一響應者

應用程式必須是 當前音訊額控制者

目前ios7給我們的遠端控制許可權僅限於音訊控制

複製** **如下:

typedef ns_enum(nsinteger, u ;

例項:複製** **如下:

#import "viewcontroller.h"

@inte***ce viewcontroller ()

@end

@implementation viewcontroller     

- (void)viewdidload

- (bool)canbecomefirstresponder

- (void)viewdidappear:(bool)animated

#pragma mark 遠端控制事件

- (void)remotecontrolreceivedwithevent:(uievent *)event

[self changeuistate];

}}#pragma mark 介面布局

- (void)initlayout

#pragma mark 介面狀態

- (void)changeuistateelse

}- (void)btnclick:(uibutton *)btnelse

_isplaying =! _isplaying;

[self changeuistate];

}@end

遠端控制例項效果

這次筆記貼了很多**,是因為這兩個事件使用簡單,理論知識不多,光講理論,也不好理解,貼**非常直觀。

本文標題: ios開發之運動事件和遠端控制

本文位址:

運動控制和過程控制

自動控制分為兩個部分,分別是運動控制和過程控制,下面是兩者的描述。1 運動控制 運動控制主要是指以機械運動的驅動裝置 電動機為控制物件,以微控制器 cpu等控制器為核心,以電力電子功率變換裝置為執行機構,組成的電器傳動自動控制系統。自動控制系統將電能轉化成機械能,實現機械的運動控制。2 過程控制 過...

iOS開發之遠端推送

說到遠端推送,應該用的也挺多的,今天就基於sea的雲推送服務,做乙個推送的小demo,來了解一下ios中的遠端推送是怎麼一回事兒,首先你得有蘋果的開發者賬號,好鹹蛋也差不多了,主要內容走起。一 準備階段 1 開啟mac下的鑰匙串 鑰匙串訪問 證書助理 從證書頒發機構請求證書,如下圖所示 2 經過上一...

iOS開發Swift篇 (六)流程控制

一 swift中的流程控制 swift支援的流程結構如下 迴圈結構 for for in while do while 選擇結構 if switch 注意 這些語句後面一定要跟上大括號 在c語言中不是必須的 說明 跟c語言對比,用法基本一樣的有 for while do while if 因此,只需...