2

Я искал много по сети, но не смог узнать ничего конкретного. Думаю, это не очень большая проблема, но я не могу это понять.как определить, какое подзону коснется программно

Я работаю над UIImageView «A», а затем добавляю некоторые другие UIImageViews в качестве подзадачи этого «A ImageView». UserInteraction включен для всех подвид. Теперь в методе TouchBegan я получаю массив подзаголовков «A ImageView» и сравниваю его с Touch.view. но touch.view всегда равно родительскому, т. е. «ImageView» и никогда не возвращает затронутый subView.

Поэтому, пожалуйста, расскажите мне, как определить, какой субвизор коснулся, а затем я буду перемещать этот подсмотр в новое место, обновив его центр.

Спасибо вам всем заранее и с нетерпением жду вашего ответа.

С уважением,

ответ

0

боюсь, что это неправильно использовать ImageView как кнопки, но если вы настаивает, чтобы сделать это, попробуйте эти:

вы можете переписать метод Трассировка с помощью подклассов в ImageView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *hittedView = [super hitTest: point withEvent: event]; 
    NSLog (@"self=<%p>, hitted=<%p>", self, hittedView); 
    return hittedView; 
} 

добавить журналы, чтобы узнать, возвращает ли hitTest по умолчанию правильное подвью.

Если нет, то я боюсь, что вы должны написать Трассировка код вашей собственной личностью:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    for (UIView *view in self.subviews) { 
     if (CGRectContainsPoint(view.frame, point)) { 
      return view; 
     } 
    } 
    return self 
} 

Этот документ является полезным для вас: http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html

0

Является ли взаимодействие подвидов с поддержкой, и если да, вы пробовали давать отдельные тег для каждого основного вида и подвида, который вы добавляете динамически и проверить связь, просматривая свои метки ...

+0

Благодарности yunas за ответ Да userInteraction включен, но я не пробовал эту логику тегов, позвольте мне попробовать, и я скоро расскажу вам о результатах. –

+0

Я начал отмечать subViews с 2-х сторон, у затронутого представления всегда есть значение тега 0. Это даже не допустимый тег для любого вида изображения, даже для родительского UIImageView. Таким образом, это означает, что он всегда обнаруживает self.view как затронутый вид. –

+0

hmmmm Я предполагаю, что вы делаете что-то ужасно неправильно. Я создал демонстрационный проект, вы можете скачать его здесь http://cl.ly/GRnl, а на консоли вы увидите тег self.view как 1000 и imageview как 500 в соответствии с настройками. – yunas

 Смежные вопросы

  • Нет связанных вопросов^_^