私は、 aUILabel
と aの 2 つの要素のみを含む小さなアプリに取り組んできましたUIPickerView
。
はUILabel
によって更新され、NSTimer
60 から 0 までカウントダウンします。
にはデータの配列のみが含まれます。どちらとUIPickerView
も直接対話しないでください。UILabel
NSTimer
私の問題は、で遊んで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