這一回來定製UIView 上的觸摸事件,作為例子,只是簡單地檢測出觸摸事件並顯示當前座標在控制台上。
首先添加新檔案,如:
在顯示的對話方塊中選中Cocoa Touch Class 的Objective C class ⇒UIView
在項目的添加菜單中選擇Touch 。檢測觸摸時間需要實現下面的函數。
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event;
這個函數由使用者觸控螢幕幕以後立刻被調到。為了自訂他的行為,我們像下面來實現:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
CGPoint pt = [touch locationInView:self];
printf("point = %lf,%lf\n", pt.x, pt.y);
}
上面的代碼將觸摸點的座標取出,並列印到控制台上。
如果需要得到多點觸摸(不只是一根手指)的資訊,需要使用anyObject 執行個體指定UIView。
另外,TouchAppDelegate 的applicationDidFinishLaunching 函數像下面一樣實現:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
TouchView* view = [[TouchView alloc]
initWithFrame:CGRectMake(100, 100, 200, 200)];
view.backgroundColor = [UIColor greenColor];
[window addSubview:view];
[window makeKeyAndVisible];
[view release];
}
這裡用intiWithFrame 指定的矩形地區可以任意。另外為了明確觸摸的地區大小,設定其view.backgroundColor。
雖然通過initWithFrame 在TouchAppDelegate 內建立了TouchView 的執行個體、但是通過addSubview:view 將管理責任交給了window 。就是說,TouchAppDelegate 與window 兩個執行個體都對TouchView 執行個體實施管理。所以這裡用[view release] 釋放TouchAppDelegate 的管理責任
摘自:易飛揚