У меня есть пользовательский тип UIButtons, созданный прагматически в пользовательском представлении. Вид в основном меню. Я генерация кнопок со следующим кодом, в файле .m отображения вида:UIButton не меняет фон на touchUpInside
-(void) generateButtons: (NSMutableArray *) buttonsArray
{
UIImage *barItemImage = [[UIImage imageNamed:@"ipad-menubar-button.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
float buttonWidth = (self.frame.size.width - (2 * FIRSTBUTTONXCOORDINATE) - 25)/ 6.0f;
float xCoord = FIRSTBUTTONXCOORDINATE;
float yCoord = (self.frame.size.height - BUTTONHEIGHT)/2.0f;
for (int i = 0; i < buttonsArray.count; i++)
{
NSString* buttonTitle = [buttonsArray objectAtIndex:i];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
action:@selector(botButtonAction:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:buttonTitle forState:UIControlStateNormal];
button.frame = CGRectMake(xCoord, yCoord, buttonWidth, BUTTONHEIGHT);
button.tag = i;
[button setBackgroundImage:barItemImage forState:UIControlStateNormal];
xCoord += buttonWidth + 5;
[self addSubview:button];
}
}
На touchUpInside, botButtonAction называется, и он делает то, что он должен. Однако кнопки обычно не дают визуального указания на touchUpInside. Когда я touchDown на кнопке и проведите пальцем в любом направлении, тогда я вижу, что цвет фона становится темнее. Иногда я вижу один и тот же визуальный признак на touchUpInside. Это кажется совершенно случайным.
Любые идеи относительно того, что я могу делать неправильно здесь?
Редактировать: К сожалению, я занят другими проблемами. Вот код для botButtonAction и метод вызывается
-(void) botButtonAction: (UIButton *) sender
{
if (self.delegate)
[self.delegate optionsMenuAction:self data:sender.tag];
}
-(void)optionsMenuAction:(OptionsMenueView *)view data:(int)tag
{
if (self.PDFVC)
{
[self.navigationController popToViewController:self animated:YES];
}
if (!self.optionsMenue.isAtWPC || tag != WPC)
[self transitionFromViewAtIndex:self.selectedVCIndex toView:tag];
else
[self transitionFromViewAtIndex:self.selectedVCIndex toView:WPList];
}
Но так как я использую touchUpInside, эти методы не вызываются на приземление. Я просто хочу, чтобы кнопка была highLight (немного выделяется bg) на touchDown. Как я уже говорил, это происходит на touchDown и салфетки.
Редактировать Я до сих пор работал на реальных устройствах (iPad и iPad 2). Когда я попытался запустить его на симуляторе, я получаю правильный результат. При щелчке мыши кнопка подсвечивается.
Редактировать Я думаю, что я выяснил точную проблему (все еще ищут решение). Если я прикасаюсь точно к кнопке, и прикосновение не охватывает какую-либо часть вставки, то подсветка работает. Однако, если касание охватывает часть кнопки, а также часть вставки/снаружи, то подсветка не работает.
Сложно сказать, не видя, что происходит в 'botButtonAction:'. Не могли бы вы предоставить этот раздел? Кроме того, чтобы дважды проверить, вы понимаете, что 'UIControlEventTouchUpInside' вызывается, когда пользователь поднимает свой палец, не так ли? – Chris
hello user2891327 можете ли вы отправить код botButtonAction: –