2013-08-20 165 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]); 

}