2013-11-24 47 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