觸控事件

weixin_34378969發表於2016-11-16

能執行觸控事件的類有一個共同的特點:都繼承於UIResponder
因為UIView和UIViewController都繼承於UIResponder,而幾乎所有的控制元件都繼承UIView,所以,控制元件都能執行觸控事件

觸控事件比較簡單,只要實現三個方法就行:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"Start touch.");
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"Moving...");  
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"Touch end.");
}
  • 觸控事件不執行的情況有:
    1. userInteractionEnabled=NO
    2. hidden=YES
    3. alpha=0~0.01
    4. 沒有實現開始觸控方法(注意是touchesBegan:withEvent:而不是移動和結束觸控事件)

前三點都是針對UIView控制元件或其子控制元件而言的,第四點可以針對UIView也可以針對檢視控制器等其他UIResponder子類。對於第四種情況這裡再次強調是物件中重寫了開始觸控方法,則會處理這個事件,如果僅僅寫了移動、停止觸控或取消觸控事件(或者這三個事件都重寫了)沒有寫開始觸控事件,則此事件該物件不會進行處理。

這篇文章參考至:【Kenshin Cui's Blog】【iOS開發系列--觸控事件、手勢識別、搖晃事件、耳機線控】

相關文章