2011-11-03 54 views
0

我正在尋找一種方法來確定用戶是否用他的手握住他的iPhone在objective-c中。 問題是,由於某些原因,我的iPhone遊戲中的多點觸控層在用戶將iPhone放在某物(桌子,椅子,沙發等)上時並不像預期的那樣工作,只用一隻手就可以使用它。它不取決於方向。如何檢測用戶是否用他的手拿着iPhone

任何幫助表示讚賞!

謝謝。

+7

一些iPhone在功能上有很好的構建:只需檢查信號強度...... – Kapep

+1

@kapep:如果可以的話,我會+100。 – 2011-11-03 17:53:28

+4

@Marco這聽起來像是你試圖從船上救出水,而不是修理它的孔。你最好直接解決問題,而不是解決問題,而不是創造新的東西來間接解決問題。 –

回答

2

使用CMMotionManager。

http://developer.apple.com/library/ios/#documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html

只要保持裝置「userAcceleration」變化的跟蹤和分析它。如果它沒有改變,你可以猜測它在一個不移動的物體上。如果它發生變化,你可以猜測它是在用戶的手中。問題是可能不完美,需要進行一些精確的調整和調試才能找到可能測試的正確值(想法:您應該進行一些測試,看看如果iPhone處於非移動物體上會發生什麼情況,汽車,公共汽車,火車......)。

但這應該工作。

+0

感謝奧利弗,我會試着看看它是否夠好。 –

+0

@Marco:不客氣 – Oliver

+0

+1,因爲我認爲這是我原來問題的正確答案。不幸的是,我意識到這對我來說不夠好,因爲戴着手套或使用厚蓋的人可能仍然有問題。我將在某個時候接受它作爲答案,但我想暫時將其打開。謝謝。 –

2

與其嘗試疊加一個kludge,你需要弄清楚多點觸控圖層的實現有什麼問題,這意味着它沒有正確激活,除非設備被握在某人的手中。手中拿着的設備幾乎可以肯定只是代表什麼時候該層正在工作和何時不是這種情況之間的真正區別所在......您需要弄清楚實際情況的真正區別是什麼。

例如:如果在圖層中的其他地方存在固定觸摸,則可能只是正確地註冊了多點觸摸移動 - 從握住設備意外觸摸?

+0

謝謝鄧肯,我一直在想你說的,但它確實似乎與設備有關。正如我寫的,如果我用右手輕敲桌面上的iPhone,並用左手輕輕觸碰邊緣(而不是屏幕),則一切正常。換句話說,我不需要爲了讓它工作而堅持下去。另外,當我處於調試模式時,問題不會發生,而且我只用右手,因爲電纜已插入電源並使其工作。正如你所能理解的那樣,調試真的很棘手! –

+1

嗯。某種大量的靜電問題?這可能會影響觸摸屏的性能。你說你已經嘗試了多種設備......你有沒有嘗試多個_tables_?比如一個在完全不同的環境中?手機側面的輕觸和插入電纜都有可能使設備接地......這可能是正在發生的事情。 :) –

+0

是的我試過不同的表面。它發生在桌子,沙發,椅子上,總是有相同的結果。我應該試着用厚手套拿着它,也許這是一個熱的問題? –

相關問題