Ios UIStepper发行:减价但赢得';t增量

Ios UIStepper发行:减价但赢得';t增量,ios,uistepper,Ios,Uistepper,我对UIStepper有一个奇怪的问题(它伴随着UITextField) 考虑这个代码片段: @interface LTRPageTracker : UIView <UITextFieldDelegate> { UIStepper* page_move; UITextField* page_no_view; } -(void) nextOrPrevPage:(id)sender forEvent:(UIControlEvents) event; @impleme

我对UIStepper有一个奇怪的问题(它伴随着UITextField) 考虑这个代码片段:

@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];
}
@interface LTRPageTracker:UIView
{
UIStepper*页面移动;
UITextField*页面\否\视图;
}
-(void)nextOrPrevPage:(id)发送方forEvent:(UIControlEvents)事件;
@实现LTRPageTracker
-(id)initWithFrame:(CGRect)帧
{
self=[super initWithFrame:frame];
如果(自我){
//初始化代码
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];
[第页移动设置最小值:0];
[第页移动设置值:7];
page_move.maximumValue=1000;
[page_move addTarget:self action:@selector(nextOrPrevPage:forEvent:)for controlEvents:UIControlEventValueChanged];
page_no_view=[[UITextField alloc]initWithFrame:pageNoframe];
page_no_view.delegate=self;
page_no_view.backgroundColor=[UIColor redColor];
[自添加子视图:页面\否\视图];
[自添加子视图:页面移动];
[页面\移动发送操作或控制事件:uicontrol事件值更改];
[页面移动设置已启用:是];
}
回归自我;
}
-(无效)nextOrPrevPage:(id)发件人forEvent:(uicontrol事件)事件{
//断言(发送方==页面移动);
NSLog(@“事件为%x”,事件);
page_no_view.text=[[NSNumber numberwhithdouble:page_move.value]stringValue];
}
我已将此视图添加到导航栏。 我可以减少UIStepper的值,但不能增加它(事件不会因为增量而触发,但会减少)。 为什么?
使用iOS 7,在模拟器上运行。

每当您遇到UI元素没有响应的问题时,您应该首先检查它(或它的一部分)是否超出其superview的范围(超出范围的部分将不会响应)。一种简单的方法是为superview提供背景色。在init方法中,为self指定一个背景色,然后查看它显示了什么。我打赌你会看到步进机的右侧不在其superview内,因此你需要将该视图放大,或更改该视图中步进机的位置

如果将视图的帧设为150x30,并在视图的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

好主意,让我查一查。