0

私は、 aUILabelと aの 2 つの要素のみを含む小さなアプリに取り組んできましたUIPickerView

UILabelによって更新され、NSTimer60 から 0 までカウントダウンします。

にはデータの配列のみが含まれます。どちらとUIPickerViewも直接対話しないでください。UILabelNSTimer

私の問題は、で遊んでUIPickerView上下にスクロールすると、カウンターの「アニメーション」が停止し、UIPickerView からオプションを選択するまでアクションを継続することです。

私はこれを修正できませんでした.iPhone SDKのバグなのか、それともbecomeFirstResponderとして役立つプロパティがあるのか​​ わかりません。

iOS SDK 6.1 を使用しています。

これは私のコードです:

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>{
    IBOutlet UIPickerView *uno;
    NSMutableArray *numeros;
    NSTimer *timer;
    IBOutlet UILabel *contador;
    int num;
}

@property (nonatomic, retain) IBOutlet UIPickerView *uno;

@property (nonatomic, retain) NSMutableArray *numeros;

@property (nonatomic, retain) IBOutlet UILabel *contador;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize uno, numeros, contador;

- (void)viewDidLoad
{
    [super viewDidLoad];

    numeros = [[NSMutableArray alloc] init];
    [numeros addObject:@"0"];
    [numeros addObject:@"1"];
    [numeros addObject:@"2"];
    [numeros addObject:@"3"];
    [numeros addObject:@"4"];
    [numeros addObject:@"5"];
    [numeros addObject:@"6"];
    [numeros addObject:@"7"];
    [numeros addObject:@"8"];
    [numeros addObject:@"9"];

    uno.delegate = self;
    uno.dataSource = self;

    num = 60;

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
    return [numeros count];
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [numeros objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    NSLog(@"Hi");
}

- (void)updateCounter:(NSTimer *)theTimer {
    num = num - 1;
    [contador setText:[NSString stringWithFormat:@"%d",num]];
}

@end

アプリは次のようになります: http://imgur.com/ljB93tN

4

1 に答える 1