我正致力於將現有的iPhone/iPad項目向下兼容到iPhoneOS 3.0。iOS 3.1.3中的UIGestureRecognizer?
我目前的測試設備是一個帶有3.1.3的iPod Touch。
下面的代碼位導致的問題:
Class gestureRecognizer = NSClassFromString(@"UISwipeGestureRecognizer");
if (gestureRecognizer != nil)
{
UISwipeGestureRecognizer * leftSwipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(didSwipeLeft:)];
leftSwipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
leftSwipeRecognizer.delegate = self;
[self.view addGestureRecognizer:leftSwipeRecognizer];
_leftSwipeRecognizer = leftSwipeRecognizer;
}
根據蘋果文檔UIGestureRecognizer定義從iOS的3.2開始。所以我期望Class gestureReconizer
在以前的操作系統版本上是nil
,並且以下內容是否會被跳過。但它不會跳過。 gestureRecognizer
不nil
,則if
中的代碼開始於leftSwipeRecognizer.direction
因爲執行和崩潰:
-[UISwipeGestureRecognizer setDirection:]: unrecognized selector sent to instance 0x1e5720
這種情況相當混亂。我想我正在做這本書的一切。我試圖在使用它之前檢查一個類是否存在,但不應該在那裏的類存在,愚弄我的測試,不符合其預期的規格,並崩潰。
我當然可以在這裏和那裏放一些respondsToSelector
檢查來解決這個崩潰問題,但它不是一個很好的方法來做到這一點。
任何其他建議?