Обнаружение касания на UIView с Интерфейсным Разработчиком - PullRequest
2 голосов
/ 04 декабря 2009

Как я могу обнаружить касания в UIviewController для UIView только с кодом (без Interface Builder)?

Я нашел метод touchesBegan, но он никогда не вызывается. Я не инициализировал что-либо еще относительно этого метода.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

Ответы [ 4 ]

6 голосов
/ 21 декабря 2010
#import "TouchView.h"


//TouchView.h

#import <Foundation/Foundation.h>
#import "TouchViewDelegate.h"

@interface TouchView : UIView {
    id <TouchViewDelegate>  delegate;
}
@property (retain) id delegate;
@end

//TouchView.m

@implementation TouchView
@synthesize delegate;

-(id) initWithFrame:(CGRect)frame
{
    self.userInteractionEnabled = YES;
    return self;
}
-(id) initWithCoder:(NSCoder *)aDecoder
{
    self.userInteractionEnabled = YES;
    return self;
}
-(void) awakeFromNib
{
    self.userInteractionEnabled = YES;
}
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [delegate touchDown:self];
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [delegate touchUp:self];
}
@end

//TouchViewDelegate.h
#import <UIKit/UIKit.h>


@protocol TouchViewDelegate
-(void) touchDown:(id) sender;
-(void) touchUp:(id)sender;
@end
1 голос
/ 04 декабря 2009

Я бы прочитал разделы Touch Events Руководства по программированию приложений iPhone.

UIViewController и UIView оба являются UIResponders , который отвечает за обработку событий.

Для обработки событий вам нужно переопределить сенсорные * методы, чтобы делать то, что вы хотите. Чтобы узнать, какие события касания произошли, посмотрите на UIEvent .

0 голосов
/ 03 января 2011

Исправление для madmik3,

вам не хватает супер-вызова в вашем initWithFrame.

-(id) initWithFrame:(CGRect)frame {
 if (self = [super initWithFrame:frame]) {
 self.userInteractionEnabled = YES;
 }  return self;
}
0 голосов
/ 05 декабря 2009

В вашем методе инициализации:

self.userInteractionEnabled = YES;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...