2015-03-06 3 views
2

Я ищу, чтобы перехватить все события касания на родительском UIView и показать, где пользователь прикасается, но все еще пузырится эти события касания к представлениям детей, т.е. UIButtons, UITableViewCell и т. Д., Чтобы эти дети взаимодействовали по умолчанию ,Интерактивный сенсорный дисплей

У меня нет никаких проблем, отображающие события прикосновения в интерактивном режиме на UIView с использованием основных методов делегата:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
     [super touchesBegan:touches withEvent:event]; 
    } 

    -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
     [super touchesEnded:touches withEvent:event]; 
    } 

Моя проблема в данный момент пузырится эти события к следующему ответчику, когда UIView содержит другие представления интерактивных детей, таких как UIButtons. touchsBegan: никогда не запускается с родительским видом при нажатии кнопки, поэтому я не могу отображать что-то «красивое» для пользователя, когда кнопки кранов.

Есть ли лучший способ, кроме создания категории для UIButton, UITableViewCell? Благодаря

Вот пример того, что я ищу, чтобы сделать пользователю в любое время прикасается к экрану ... (обратите внимание на белый круг, когда пользователь касается кнопки): https://m1.behance.net/rendition/modules/154366385/disp/9532a948c71e28ffda2219600c05ffd9.gif

+0

Я бы попробовал создать распознающий жест жесты. Установите 'detectizer.cancelsTouchesInView = NO', чтобы он не мешал сенсорной обработке вашего представления. –

+0

благодарит за ваш ответ. Приложите ли вы жест в супервизор UIButton? ответ близок, но кажется, что пользователь должен будет перетащить палец, чтобы активировать действие: селектор в представлении родителей, поэтому, если пользователь просто постучал, не двигая пальцем, родительский UIView никогда не получит событие жестов. – mourlam

+0

Вы также можете использовать распознаватель жестов или сделать свой собственный. Но распознаватель жестов позволит вам получать уведомления о касаниях, не мешая работе с сенсорным экраном по умолчанию. –

ответ

2

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

Все события прикосновения будут отправлены на этот вид. Если вы вернете НЕТ в методеInInside: widthEvent:, сенсорное событие будет отправлено на нижние объекты.

@implementation MyView 

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    // show bubble here 
    return NO; // send touch events to lower layer objects. 
} 
+0

gotcha. поэтому подклассифицированное представление наложения. попробуем это и вернемся к вам. благодаря – mourlam

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