若要取得點擊畫面時的對應座標,除了可以使用 UITouch 來取得與畫面互動時的事件外,還可以利用 UIGestureRecognizer 手勢辨識的方法來達成此目的,兩者最大的不同是,前者,UITouch 會回應每一個觸碰事件,包含點擊畫面、移動與手指放開畫面,使用者必須自行建立一套規則來判斷所要擷取的事件,如果只是針對一個簡單的點擊事件,則會顯得有些瑣碎,而後者,UIGestureRecognizer 則是先建立一套制式的規則,像是滑動、點擊或是拖曳等,等到觸碰事件符合所設定的制式規則時才去做回應。
有關更詳細的 UIGestureRecognizer 使用方法,請參考手勢辨識 UIGestureRecognizer 物件一文,下面程式碼就只針如何對取得點擊畫面的座標位置加以說明(在 ViewController 中實作以下程式碼)。
//宣告一個點擊手勢辨識的物件
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapScreen:)];
//設定行為(單指、點擊兩下)
[tapGestureRecognizer setNumberOfTouchesRequired:1];
[tapGestureRecognizer setNumberOfTapsRequired:2];
//加入欲互動區的 UIView 中
[self.view addGestureRecognizer:tapGestureRecognizer];
- (void)tapScreen:(UITapGestureRecognizer *)tap {
CGPoint point = [tap locationInView:self.view];
NSLog(@"點擊兩下畫面座標位置 %f, %f",point.x, point.y);
}
上述程式碼中,我們宣告了一個點擊手勢辨識的物件 tapGestureRecognizer 與辨識成功時需要回應的方法函式 tapScreen:,並且制定它的行為(單指、點擊兩下)後才把它加入到主畫面中,這時,使用者只要在畫面任何地方有「使用單指點擊兩下」的動作,都會觸發所要回應的方法函式,以取得點擊畫面時的所在座標。
同理,我們也可以利用 UIGestureRecognizer 來取得手指在螢幕上滑動時的座標,比起使用 UITouch 來做判斷再取得座標,實在容易許多, 但是如果想要做更細微的辨識,還是得仰賴 UITouch 的方法才行。
//宣告一個滑動手勢辨識的物件
UISwipeGestureRecognizer *swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeScreen:)];
//設定行為(單指、向右滑動-以裝置擺設的方向為準)
[swipeGestureRecognizer setNumberOfTouchesRequired:1];
[swipeGestureRecognizer setDirection:UISwipeGestureRecognizerDirectionRight];
//加入欲互動區的 UIView 中
[self.view addGestureRecognizer:swipeGestureRecognizer];
- (void)swipeScreen:(UISwipeGestureRecognizer *)swipe {
CGPoint point = [swipe locationInView:self.view];
NSLog(@"滑過畫面座標位置 %f, %f",point.x, point.y);
}
手指點擊兩下與滑動時擷取座標的結果 |
ps:關於 UITouch 的相關文章與應用,你可以在本站的索引式搜索 Index Search 中使用「UITouch」來做查詢,獲得更多相關資訊。
沒有留言:
張貼留言