Я внедрил SWReveal control в своем приложении. Для тригера действия у меня есть UIBarButtonItem с пользовательским представлением. Ну, все работает нормально, но я заметил, что я могу запустить событие даже при нажатии вдали от изображения (изображение шириной около 44 пикселей и нажатие до 100 пикселей).Ограничьте область с щелчком левой панели на размер пользовательского uibarbuttonitem
Я искал какое-то время, и самое лучшее решение, которое я ве нашел (определение пользовательской кнопки и инстанцировании UIBarButtonItem с «initWithCustomView»)
Это мой предыдущий код:
UIBarButtonItem *revealButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"reveal-icon"] style:UIBarButtonItemStylePlain target:_revealController action:@selector(revealToggle:)];
self.navigationItem.leftBarButtonItem = revealButtonItem;
и код с «решением»:
//create the image for your button, and set the frame for its size
UIImage *image = [UIImage imageNamed:@"reveal-icon"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);
//init a normal UIButton using that image
UIButton* button = [[UIButton alloc] initWithFrame:frame];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:_revealController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside];
//finally, create your UIBarButtonItem using that button
UIBarButtonItem* revealButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = revealButtonItem;
с этим позже кодом, который я знаю, у меня есть кнопка правильного размера (я в установить BackgroundColor, и проверил кор прямоугольный размер кнопки), но все же срабатывает при нажатии далеко от кнопки.
¿любые идеи?
Заранее спасибо.
Не отвечая на ваш вопрос, но: Почему вы хотите это сделать? Существует причина, по которой iOS увеличивает зону действия кнопок панели. Кажется, у вас есть кнопка меню (как единственная кнопка слева), и я действительно не вижу никакого преимущества, заключающегося в том, что явная область, касающаяся касания, меньше, чем значение по умолчанию. И: Проверьте это на устройстве, а не на симуляторе !! –
Ваши пользователи убьют вас, если у вас будет осязаемая область размером около 20x20pt (просто угадайте размер вашего значка) .. ;-) –
Я прочитал руководство человека по яблоку, и я не притворяюсь, что сделаю такие кнопки litle , но, как я уже сказал в этом вопросе, проблема в том, что выбираемая область намного больше, чем фактический размер кнопки (вы можете увидеть ту же проблему в другом известном приложении, где у вас есть пользовательское изображение, работающее как кнопка , но нажатие далеко от него запустит действие. Но в приложении facebook вы увидите, что этот beaheaviour исправлен. :) – raululm