2013-11-24 2 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 요소에 문제가있을 때마다 확인해야 할 첫 번째 사항은 슈퍼 뷰의 경계 밖에 있는지 (경계에서 벗어난 부분은 응답하지 않음) 여부입니다. . 이를 수행하는 쉬운 방법은 수퍼 뷰에 배경색을 부여하는 것입니다. init 메서드에서 self에 배경색을 지정하고 그 배경을 보여줍니다. 나는 당신이 스테퍼의 오른쪽이 슈퍼 뷰 내에 있지 않다는 것을 알게 될 것이므로 그 뷰를 더 크게 만들거나 그 뷰 내의 스테퍼의 위치를 ​​바꿀 필요가있을 것입니다. 당신이보기의 프레임 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 
+0

좋은 생각이, 내가 확인 할 수 있습니다. – pbhowmick

+0

그리고 남자에게 시가를 줘. 그것은 문제였습니다. – pbhowmick