2013-11-24 73 views
2

我有一個UIStepper一個奇怪的問題(和它附帶的UITextField) 考慮以下代碼片段:UIStepper問題:遞減,但不會增加

@interface LTRPageTracker : UIView <UITextFieldDelegate> 
{ 
    UIStepper* page_move; 
    UITextField* page_no_view; 
} 
-(void) nextOrPrevPage:(id)sender forEvent:(UIControlEvents) event; 

@implementation LTRPageTracker 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     CGRect stepperFrame, pageNoframe; 
     pageNoframe.origin = frame.origin; 
     pageNoframe.size.height = frame.size.height; 
     pageNoframe.size.width = frame.size.width/2; 
     stepperFrame.origin.x = pageNoframe.origin.x + pageNoframe.size.width +1; 
     stepperFrame.origin.y = frame.origin.y; 
     stepperFrame.size = pageNoframe.size; 

     page_move = [[UIStepper alloc] initWithFrame:stepperFrame]; 
     [page_move setMinimumValue:0]; 
     [page_move setValue:7]; 
     page_move.maximumValue =1000; 
     [page_move addTarget:self action:@selector(nextOrPrevPage:forEvent:) forControlEvents:UIControlEventValueChanged]; 

     page_no_view = [[UITextField alloc] initWithFrame:pageNoframe]; 
     page_no_view.delegate = self; 
     page_no_view.backgroundColor = [UIColor redColor]; 
     [self addSubview:page_no_view]; 
     [self addSubview:page_move]; 
     [page_move sendActionsForControlEvents:UIControlEventValueChanged]; 
     [page_move setEnabled:YES]; 
    } 
    return self; 
} 

-(void) nextOrPrevPage:(id) sender forEvent:(UIControlEvents) event { 
    //assert(sender == page_move); 
    NSLog(@"Event is %x", event); 
    page_no_view.text = [[NSNumber numberWithDouble: page_move.value] stringValue]; 
} 

我加入這個查看導航欄。 而且我可以減少UIStepper的值,但不增加它(事件不會被觸發增量,但會減少)。 爲什麼? 使用iOS 7,在模擬器上運行。

回答

0

每當你有一個UI元素沒有響應的問題,你應該檢查的第一件事是它(或它的一部分)是否超出它的超級視圖的界限(超出界限的部分將不會響應) 。一個簡單的方法就是給superview一個背景顏色。在init方法中,爲背景顏色分配自己的顏色,並查看顯示的內容。我敢打賭,你會發現步進器的右側不在其超視圖範圍內,因此您需要將該視圖放大,或者改變步進器在該視圖內的位置。

如果您視圖的幀150×,並更改視圖的init方法這兩條線,我認爲它應該工作正常了許多大如1000:

pageNoframe.size.width = frame.size.width/4; // changed 2 to 4 
    stepperFrame.origin.x = pageNoframe.origin.x + pageNoframe.size.width+20; // changed 1 to 20 
+0

好主意,讓我查一下。 – pbhowmick

+0

給男人一支雪茄。這是問題所在。 – pbhowmick