У меня есть объект, созданный из класса UIView для создания неограниченного количества просмотров, которые затем отображаются в меньших размерах в середине экрана. Я использовал UITapGestureRecognizer, чтобы увеличить одно из представлений, чтобы соответствовать экрану, но проблема здесь в том, что объект доступен только в первом классе и не может быть передан второму классу, который является селектором. Каковы ваши предложения по этой конкретной проблеме? Как я могу отправить свой объект в селектор, чтобы использовать его там? СпасибоЕсть ли способ отправить объект через UITapGestureRecognizer?
Вот первый класс, который создает объект (производный от iCarousel):
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
UILabel *label = nil;
UIButton *close = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//create new view if no view is available for recycling
if (view == nil)
{
view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320.0f, 460.0f)];
view.contentMode = UIViewContentModeCenter;
view.backgroundColor = [UIColor whiteColor];
label = [[UILabel alloc] initWithFrame:CGRectMake(100, -100, 100, 100)];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentCenter;
label.font = [label.font fontWithSize:50];
label.tag = 1;
[view addSubview:label];
close.frame = CGRectMake(0, 0, 30, 30);
[close setTitle:@"x" forState:UIControlStateNormal];
close.titleLabel.font = [UIFont systemFontOfSize:25];
[close addTarget:self action:@selector(closeMe:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:close];
UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapToMaximize:)];
tap.numberOfTapsRequired = 1;
[view addGestureRecognizer:tap];
}
else
{
//get a reference to the label in the recycled view
label = (UILabel *)[view viewWithTag:1];
}
label.text = [items[index] stringValue];
return view;
}
и селектор:
- (void)tapToMaximize:(UITapGestureRecognizer*)recognizer {
[UIView animateWithDuration:0.3
delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
carousel.transform = CGAffineTransformMakeScale(1, 1);
}
completion:^(BOOL finished) {
}];
}
Таким образом, вместо того, чтобы использовать «карусель», которая представляет все взгляды, я хочу использовать «вид», чтобы я мог только увеличить текущий вид, а не все из них.
Можете ли вы опубликовать код, показывающий, как вы это настроили? – Austin