Touch Event для UIImageView не работает для всех изображений в iOS

I Поместите имги, как показано ниже.

В ListView.m

-(void)viewDidLoad()
 {
        int j=5;
        for (int i=0; i<[po_id_array count]; i++) {

                ViewForTickImage *tickimage=[[ViewForTickImage alloc]initWithFrame:CGRectMake(5, j, 35, 35)];

                NSLog(@"----------%d",j);
                j=j+17;
                [tickimage setTick:FALSE];
                [tickimage setTag:i];
              //[tickimage setDelegate:self];
                [self.view addSubview:tickimage];

            }

        }

В файле ViewForTickImage.h код выглядит следующим образом:

@interface ViewForTickImage : UIView
{
    BOOL ticked;
    NSMutableArray *list_selected;
    id delegate;
    UIImageView *currentImg;
    AppDelegate *appdelegate;

}
//@property(nonatomic,readwrite)BOOL ticked;
@property(nonatomic,readwrite,getter=isTicked,setter=setTick:)BOOL ticked;
@property(nonatomic,retain) UIImageView *currentImg;
-(void)checkTickVisiblilityForListAllView;

В файле ViewForTickImage.m код:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        currentImg = [[UIImageView alloc]initWithFrame:frame];
        [currentImg setContentMode:UIViewContentModeScaleAspectFit];
        UIImage *img=[UIImage imageNamed:@"image_unselect.png"];
        [currentImg setImage:img];
        [self addSubview:currentImg];
    }
    return self;
}

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

   NSLog(@"image selected");

}

Он отображает столбец изображений. Событие Touch работает только для первого изображения. Как запустить событие касания для всех изображений. Пожалуйста, дайте решение.

0
nl ja de

1 ответы

Вместо использования imageView попробуйте использовать UIbutton и добавьте изображение в свойство изображения кнопки. yoU может легко идентифицировать клик. Используя свойство тега кнопки, вы можете определить, какая кнопка была нажата.

   UIButton *imageButton1;
   imageButton1.tag=buttonIdentifier;
   [imageButton1 addTarget:self action:@selector(imageSelected:) forControlEvents:UIControlEventTouchUpInside];
0
добавлено
Я тоже пытался с кнопкой, но одно и то же целевое событие также работает для первой кнопки не для всех. Пожалуйста, предложите об этом.
добавлено автор rani, источник
yes target работает только для первой кнопки.
добавлено автор rani, источник
for (int i = 0; i <10; i ++) {UIButton * imageButton1 = [[UIButton alloc] init]; imageButton1.frame = CGRectMake (5, j, 35, 35); imageButton1.tag = я; [imageButton1 addTarget: self action: @selector (imageSelected :) forControlEvents: UIControlEventTouchUpInside]; imageButton1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "image_unselect.png"]]; [self addSubview: imageButton1]; J = J + 34; }
добавлено автор rani, источник
- (void) imageSelected: (id) отправитель {NSLog (@ "% d изображение выбрано", [тэг отправителя]); } Затем также выдавать нефиксированные.
добавлено автор rani, источник
Тогда также это не работает. Можете ли вы предложить, где я ошибся
добавлено автор rani, источник
Каждый раз, когда он дает 0. Если я нажимаю кнопку, отличную от первой, она не переходит к целевому методу. Только когда я нажимаю на первую кнопку, она работает.
добавлено автор rani, источник
На самом деле я настраиваю кнопки или ImageViews с помощью UIView, тогда в классе UIView у нас не должно быть метода viewDidAppear. Я отредактирую код.
добавлено автор rani, источник
Сначала проверьте высоту и ширину рамы. Вот моя проблема в том, что я дал высоту как минимальный клапан, что является всей причиной. Теперь он работает.
добавлено автор rani, источник
поэтому измените значение self.frame = CGRectMake ().
добавлено автор rani, источник
вы хотите сказать, что цель работает только для первой кнопки?
добавлено автор Vinayak Kini, источник
Добавьте одну и ту же цель ко всей кнопке и цели, на основе значения тега кнопки реализуйте требуемую операцию. установить разные теги для каждой кнопки
добавлено автор Vinayak Kini, источник
Каково значение тега при нажатии кнопки? также попробуйте увеличить j на большее значение j = j + 40, может быть, кнопки накладываются друг на друга
добавлено автор Vinayak Kini, источник
Этот код работает отлично - (void) viewDidAppear: (BOOL) animated {int j = 0; for (int i = 0; i <10; i ++) {UIButton * imageButton1 = [[UIButton alloc] init]; imageButton1.frame = CGRectMake (5, j, 35, 35); imageButton1.tag = я; [imageButton1 addTarget: self action: @selector (imageSelected :) forControlEvents: UIControlEventTouchUpInside]; imageButton1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "alarm.gif"]]; [self.view addSubview: imageButton1]; J = J + 50; }} - (void) imageSelected: (id) отправитель {NSLog (@ "% d", [тег отправителя]); }
добавлено автор Vinayak Kini, источник
Я просто привел пример. Вы можете попробовать вставить этот код в любом месте, где он будет работать нормально.
добавлено автор Vinayak Kini, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.