Iphone UIButton, не работающий во вложенном UIViews

Это лучшее, что я думаю, вы можете сделать, чтобы уменьшить дублирование кода:

private static void DrawRectangles<T>(this Image thisImage, List<T> rectangles, Color color, Action<Graphics, Brush, T[]> fill)
{
    using (var g = Graphics.FromImage(thisImage))
    {
        var brush = new SolidBrush(color);
        fill(g, brush, rectangles.ToArray());
    }
}

public static void DrawRectangles(this Image thisImage, List<RectangleF> rectangles, Color color)
{
    thisImage.DrawRectangles(rectangles, color, (g, b, rs) => g.FillRectangles(b, rs));
}

public static void DrawRectangles(this Image thisImage, List<Rectangle> rectangles, Color color)
{
    thisImage.DrawRectangles(rectangles, color, (g, b, rs) => g.FillRectangles(b, rs));
}
11
задан James Hall 19 June 2009 в 13:48
поделиться

4 ответа

НАКОНЕЦ !!!!!!

Мне пришлось инициализировать все представления с помощью initWithFrame и передать в допустимом кадре прямоугольники. Init должен использоваться с контроллерами и initWithFrame, передавая rects для UIViews !!!!

characterView = [ [ CharacterView alloc ] initWithFrame:CGRectMake(0, 0, 480, 320)]; 
then 
characterMale = [ [ CharacterMale alloc ] initWithFrame:frame];
17
ответ дан 3 December 2019 в 01:34
поделиться

Принимает ли новое представление взаимодействие с пользователем? Другими словами, включена ли userInteractionEnabled в представлении «Символы»?

2
ответ дан 3 December 2019 в 01:34
поделиться

Еще одна вещь, которую следует учитывать, это то, что UIButton подвиды, которые были добавлены в UIImageView ] вообще не работают. Вам нужно создать UIView , в который вы добавляете как представление изображения, так и кнопки.

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

17
ответ дан 3 December 2019 в 01:34
поделиться

У меня была аналогичная проблема, когда я пытался добавить кнопку во время инициализации UIView с фреймом CGRectZero:

@implementation SomeView
...
- (id)initWithTitleImage:(UIImage *) newTitleImage {
  // BROKEN: frame with CGRectZero.
  self = [super initWithFrame:CGRectZero];
  if (self) {
    UIButton *someButton = ...;
    [self addSubview someButton];
  }
}

Как только я изменил фрейм на правильный прямоугольник, кнопка сработала:

@implementation SomeView
...
- (id)initWithTitleImage:(UIImage *) newTitleImage {
  // WORKING: frame with proper CGRect.
  self = [super initWithFrame:CGRectMake(0, 0, 480, 320)];
  if (self) {
    UIButton *someButton = ...;
    [self addSubview someButton];
  }
}
1
ответ дан 3 December 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: