IOS第四天(6:答题区按钮点击和乱序)

 

#pragma mark - 答题区按钮点击方法
- (void)answerClick:(UIButton *)button
{
    // 1. 如果按钮没有字,直接返回
    if (button.currentTitle.length == 0) return;
    
    // 2. 如果有字,清除文字,候选区按钮显示
    // 1> 使用button的title去查找候选区中对应的按钮
    UIButton *btn = [self optionButtonWithTilte:button.currentTitle isHidden:YES];
    
    // 2> 显示对应按钮
    btn.hidden = NO;
    
    // 3> 清除button的文字
    [button setTitle:@"" forState:UIControlStateNormal];
    
    // 4> 只要点击了按钮上的文字,意味着答题区的内容不完整
    [self setAnswerButtonsColor:[UIColor blackColor]];
}

- (UIButton *)optionButtonWithTilte:(NSString *)title isHidden:(BOOL)isHidden
{
    // 遍历候选区中的所有按钮
    for (UIButton *btn in self.optionsView.subviews) {
        if ([btn.currentTitle isEqualToString:title] && btn.isHidden == isHidden) {
            return btn;
        }
    }
    return nil;
}



// 乱序
- (void)randamOptions
{
    // 对options数组乱序
    self.options = [self.options sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
        int seed = arc4random_uniform(2);
        
        if (seed) {
            return [str1 compare:str2];
        } else {
            return [str2 compare:str1];
        }
    }];
    NSLog(@"%@", self.options);
}
- (instancetype)initWithDict:(NSDictionary *)dict
{
    self = [super init];
    if (self) {
        [self setValuesForKeysWithDictionary:dict];
        
        // 对备选按钮进行乱序,只在加载的时候,做一次乱序
        [self randamOptions];
    }
    return self;
}

 

点击事件

@implementation HMViewController

/**
 不能够交互的
 
 alpha <= 0.01
 hidden = YES
 userInteraction = NO
 
 父视图不允许交互,也不能交互
 在父视图可见范围内,可以交互,范围之外不能交互
 */
- (IBAction)click {
    NSLog(@"%s", __func__);
}

@end

 

posted @ 2015-07-30 17:59  iso  阅读(198)  评论(0编辑  收藏  举报