2012-08-12 48 views
-1

在我的應用程序中我有一個UIScrollView,並在其中我已經以編程方式創建UIImageViews。這是基於Xcode中的Tab-bar模板。我想要做的是在特定圖像被按下時更改Tabs,並且儘管我可以將該事件註冊爲觸摸,但更改tabIndex不會執行任何操作。 在以下代碼中輸入:ScrollView與圖像 - 改變touchesended選項卡不起作用

UITabBarController *tab=self.tabBarController; 
     if (tab){ 
      NSLog(@"Good"); 
     } 
     else { 
      NSLog(@"No Good"); 

總是導致無法正常記錄。我寫的代碼可以在這裏,在這裏我的UIScrollView的類型是ScrollViewer中看出: @implementation的ScrollViewer - (無效)touchesEnded:(NSSet中*)觸及withEvent:方法(*的UIEvent)事件{

if (!self.dragging) { 
    NSLog(@"Recieved Touch!"); 
    UITouch *aTouch = [touches anyObject]; 
    MainView *theInstance = [[MainView alloc] init]; 


    CGPoint point = [aTouch locationInView:self]; 
     theInstance.ycoord = point.y; 
     [theInstance touchHand]; 
} 
    [super touchesEnded: touches withEvent: event]; 
} 

@end 

任何幫助表示感謝,謝謝!

+0

結束了使用Autonomy的答案從另一個問題[Autonomy的答案這裏] [1] [1]:http://stackoverflow.com/questions/1207287/whats-the-trick-to-pass事件到下一個響應者在響應者鏈 – G4laxy 2012-08-13 02:54:28

回答

0

你從來沒有給我們任何樣本輸出:

的NSLog(@ 「Y座標=%d」,adjustedy);

但我會認爲值應導致開關。

所以首先你需要記錄self.tabbarcontroller以確保它不是零。如果可以,系統可能不想讓你切換內部觸摸事件(反正它是壞的形式)。我會這樣做的設置:

dispatch_async(dispatch_get_main_queue(), ^{ do code here }); 

因此它運行更晚。

+0

看來這種方法證明既困難又方法本身並不是最好的。你有什麼建議更清晰和更好的方法? – G4laxy 2012-08-13 02:00:01

+0

如果你認爲上面的一行太難使用了,那麼我想不出任何更簡單的方法。在許多情況下,當您深入某種方法時,您需要推遲更新GUI。您可以學習和使用塊,或者有另一種方法 - performSelector:withObject:afterDelay,其中延遲爲0 - 將消息排隊到當前線程上的選擇器,如果要更新當前線程UI。 – 2012-08-13 11:23:45