en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

9.06.2011

Touch Panel 多點觸碰時畫面的座標取得方法

幾乎大部分的 iOS 裝置都有支援多點觸碰的功能,也有越來越多的應用程式在開發時也將多點觸碰功能納入自己的 Use case 中,至於要如何取得在多點觸碰時每個點的畫面座標,可以參考下列的程式碼示範。

首先必須先確定 UIView 已經啟用多點觸碰的功能,啟用的方法可以在 Interface Builder 內點選該 UIView 在 Attributes 屬性分頁,將 Multiple Touch 項目打勾,如下圖。


或是直接使用程式碼來啟用多點觸碰的功能。

self.view.multipleTouchEnabled = YES;
接下來就可以在事件中取得多點觸碰時每個點的座標了,其方法如下。

//對畫面進行觸碰時所觸發的函式
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    //計算同一時間有多少觸碰點
    int count = [[touches allObjects] count];

    //從陣列中取得第一個觸碰點(編號0)
    CGPoint p = [[[touches allObjects] objectAtIndex:0]locationInView:self.view];

    //從陣列中取得第二個觸碰點(編號1)
    CGPoint p = [[[touches allObjects] objectAtIndex:1]locationInView:self.view];
}

上述程式碼中,[touches allObjects] 會回傳一個 NSArray 的類型,當然每次觸碰畫面時這個陣列也會隨之更新,所以我們也可以宣告一個 NSArray 型態的變數來接收這些數值,方便之後的操作。

NSArray *allTouches = [touches allObjects];






沒有留言:

張貼留言