2013-08-20 208 views
0

我在UIApplication :: sendEvent覆盖。我得到一个UIEvent,它最终为我提供了UITouch对象。当UITouch的阶段== 3(触摸阶段结束或触摸)时,我尝试识别UITouch的视图对象是否是UISegmentedControl。如果是,我尝试获取selectedSegmentIndex。在这个时候,我总是得到错误的值(或selectedSegmentIndex的前一个值)。UISegmentedControl - selectedSegment在触摸时不会改变?

是不是这个值只有在它的action方法执行后才改变?或者我需要做些什么来获取selectedSegmentIndex的最新值。

任何帮助表示赞赏。

- (void)sendEvent:(UIEvent *)event 
{ 
[super sendEvent:event]; 

NSSet *touches = [event allTouches]; 

NSEnumerator *enumerator = [touches objectEnumerator]; 
id value; 
while ((value = [enumerator nextObject])) { 
    UITouch *touch = value; 

    if (touch.phase==3) { 
     if([touch.view isKindOfClass:[UISegmentedControl class]]) 
     { 
      UISegmentedControl *sc = (UISegmentedControl*)touch.view; 

      NSLog(@"%d",[sc selectedSegmentIndex]); 

     } 

    } 
} 
} 
+3

显示代码而不是试图解释它 –

+0

@Andrey - 我已经添加了代码。希望能帮助到你。 – Jailbroken

回答

0

好吧,最后我想通过如何获得更新值。

覆盖sendAction而不是sendEvent。在这里,您可以获取事件类型以及selectedSegmentIndex的更新值。

-(BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event 
{ 
NSLog(@"%u",[((UIControl*)sender) allControlEvents]); 

}