2013-05-10 31 views
0

所以我使用的是UISegmented所示的控制enter image description hereUISegmentedControl - 最後段不容易選擇

最後一段「5」是非常努力,擊中我的手指。我從模擬器使用遊標注意到,只有大約一半的段會響應。任何一半的權利基本上是一個死區。我不確定是什麼導致了這個問題,因爲我已經將這個分段控件移到頂端,它仍然執行相同的操作。但是,如果我將分段控件移動到屏幕中心,則5段整個表面區域會響應觸摸事件...

我不知道如何解決此問題。

+2

幾乎肯定有一些其他的看法,透明,但重疊的分段控制。 – 2013-05-10 21:50:17

+0

@DavidH你是對的。它是頂部 – Alan 2013-05-10 22:33:54

回答

1

要了解可能重疊的代碼,添加此UIView的類別:

@interface UIView (Dumper_Private) 

+ (void)appendView:(UIView *)v toStr:(NSMutableString *)str; 

@end 

@implementation UIView (Dumper_Private) 

+ (void)appendView:(UIView *)a toStr:(NSMutableString *)str 
{ 
    [str appendFormat:@" %@: frame=%@ bounds=%@ layerFrame=%@ tag=%d userInteraction=%d alpha=%f hidden=%d\n", 
     NSStringFromClass([a class]), 
     NSStringFromCGRect(a.frame), 
     NSStringFromCGRect(a.bounds), 
     NSStringFromCGRect(a.layer.frame), 
     a.tag, 
     a.userInteractionEnabled, 
     a.alpha, 
     a.isHidden 
     ]; 
} 

@end 

@implementation UIView (Dumper) 

+ (void)dumpSuperviews:(UIView *)v msg:(NSString *)msg 
{ 
    NSMutableString *str = [NSMutableString stringWithCapacity:256]; 

    while(v) { 
     [self appendView:v toStr:str]; 
     v = v.superview; 
    } 
    [str appendString:@"\n"]; 

    NSLog(@"%@:\n%@", msg, str); 
} 

+ (void)dumpSubviews:(UIView *)v msg:(NSString *)msg 
{ 
    NSMutableString *str = [NSMutableString stringWithCapacity:256]; 

    if(v) [self appendView:v toStr:str]; 
    for(UIView *a in v.subviews) { 
     [self appendView:a toStr:str]; 
    } 
    [str appendString:@"\n"]; 

    NSLog(@"%@:\n%@", msg, str); 
} 

@end 

,並呼籲[UIView dumpSuperviews:theSegmentedControl];

+0

是的,我測試了所有頂部的視圖,它似乎是導致此問題的TableView。 'UITableView'覆蓋屏幕的90%和窗口的整個寬度。我不確定爲什麼它會導致屏幕右側的條子無法響應,特別是因爲TableView被隱藏了。 – Alan 2013-05-10 22:35:26

+0

隱藏視圖是否真的干擾了觸摸操作?我最終回到代碼並使用'bringSubviewToFront'來操作視圖,似乎解決了這個問題。我不確定這是否是處理這個問題的最好方法。你有什麼想法嗎? – Alan 2013-05-10 23:00:57

+0

這不是一個壞主意方法來解決它。 – 2013-05-11 11:37:58

相關問題