2012-08-12 55 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