Я не вижу, в чем проблема с моим кодом.Ничего не происходит, когда я нажимаю кнопку, как будто состояние по умолчанию даже не установлено, что странно, потому что мы не можем что-то сделать playButton.state = UIControlStateNormal
, поскольку свойство state
доступно только для чтения.
Это мой код:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// ...
playButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
playButton.frame = CGRectMake(100, 500, 100, 50);
[playButton setTitle:@"play" forState: UIControlStateNormal];
[playButton setTitle:@"stop" forState: UIControlStateSelected];
playButton.exclusiveTouch = YES;
playButton.selected = NO;
[playButton addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];
и
- (void) play {
if (playButton.state == UIControlStateNormal) {
playButton.selected = YES;
CABasicAnimation *maskAnim = [CABasicAnimation animationWithKeyPath:@"position.x"];
maskAnim.byValue = [NSNumber numberWithFloat:diagramWidth];
maskAnim.repeatCount = HUGE_VALF;
maskAnim.duration = 1.750f;
[self.maskLayer addAnimation:maskAnim forKey:@"position.x"];
self.diagramLayer.mask = maskLayer;
[backImageLayer addSublayer: self.diagramLayer];
[audioPlayerNormal play];
[moviePlayerNormal play];
}
else if (playButton.state == UIControlStateSelected) {
playButton.selected = NO;
[self.maskLayer removeAnimationForKey:@"position.x"];
self.diagramLayer.mask = nil;
[audioPlayerNormal stop];
[moviePlayerNormal stop];
}
}