Можно возвратить EmptyResult, если Вы хотите, чтобы он ничего не сделал...
return new EmptyResult();
при использовании AjaxHelper, можно избежать обновления путем предоставления неудачного кода состояния (например, 404 или независимо от того, что является самым соответствующим), это остановит его заменяющий отделение, поскольку JavaScript в MicrosoftMvcAjax.js явно проверяет на успешный ответ прежде, чем обновить любой elements:-
this.ControllerContext.HttpContext.Response.StatusCode = 404;
return new EmptyResult();
В конечном счете лучший способ избежать, чтобы это разработало частичное представление, таким образом, это избегает проблемы во-первых (как Вы, упоминают себя).
Как и другие говорят, у вас должна быть разумная поверхность для регистрации событий касания, но я уверен, что вы это знаете и имеете свои причины, поэтому я просто расскажу вам, как я это сделал:
Мне нужно было сделать это не так давно, и я сделал то, что только что предложил Сикстен Отто. В моем исходном вопросе (раздел «ОБНОВЛЕНИЕ») есть несколько подсказок для получения альфа-значения для вашего изображения в определенный момент:
Как создать прозрачное окно с непрямоугольными кнопками?
Редактировать: Я предлагаю создать подкласс UIControl в приведенном ниже примере, но если вам не нужно какое-либо особое поведение на вашей кнопке, кроме ее «непрямоугольности», тогда просто подклассификация UIButton без полей, настроенная с вашим PNG, сделает эту работу и потребует меньше работы . У вас больше контроля над контролем » s, создав подкласс UIControl и сделав это «сложным путем».
Я бы посоветовал вам создать подкласс UIControl
и переопределить методы событий касания, а затем проверить альфа-канал под нажатой точкой и не обрабатывать событие, если альфа == 0
. Для рисования вы переопределяете drawRect:
и используете NSImage
метод drawInRect: fromRec: operation: дробь:
для рисования изображения в рамке элемента управления.
Сначала вам нужно загрузить изображение и получить его растровое представление:
buttonImage = [NSImage imageNamed:@"myButtonImage"];
buttonImageRep = [[buttonImage representations] objectAtIndex:0];
Затем вы можете нарисовать его в представлении элемента управления: (где stateImage - это указатель на изображение, которое должно быть нарисовано в зависимости от того, находится ли кнопка нажата или нет)
- (void)drawRect:(NSRect)aRect {
[stateImage drawInRect:[self bounds] fromRect:NSMakeRect(0.0,0.0,[buttonImage size].width,[buttonImage size].height)
operation:NSCompositeSourceOver fraction:1.0];
}
На этом этапе вы нарисовали кнопку с изображением PNG. Вы можете переопределить методы события касания и обработать событие, если альфа не равна 0:
NSColor *colorUnderMouse = [buttonImageRep colorAtX:mouse.x y:mouse.y];
float alpha = [colorUnderMouse alphaComponent];
Это то, что я сделал, и это прекрасно работает. Надеюсь, это поможет!
NB: Мой пример предназначен для Mac, но он также должен работать на iPhone, возможно, с некоторыми небольшими изменениями.
Как Гуванте говорит , на самом деле не стоит полагаться на точные прикосновения. Apple, например, рекомендует, чтобы элементы управления имели размер не менее 44 пикселей по .
Я бы рекомендовал использовать UIButton
типа UIButtonTypeCustom
, установите изображение кнопки в свой PNG и зарегистрируйтесь для событий касания ( подробнее об обработке событий см. здесь). Затем в своем методе действия вы можете получить координаты касания из события и проверить эти координаты по альфа-каналу вашего изображения, чтобы увидеть, следует ли рассматривать его как "
Похоже, вы хотите, чтобы область нажатия кнопки точно соответствовала используемому PNG.
. Если это то, что вы ищете, я бы во-первых посоветовал этого не делать. На iPhone нажимают пальцем, который, как правило, не способен отличить такой маленький участок. Осознавая часть вашего первоначального вопроса, я заметил, что вы упомянули, что хотите обрабатывать функцию автоматически на основе альфа-канала. Хотя я бы порекомендовал свой метод ограничения областей, теоретически вы могли бы достичь этого путем выборки PNG для проверки альфа-канала со значением, смещенным относительно начала координат кнопки. Потенциально даже делать это в случае нажатия обычной кнопки.
Другой вариант - разделить кнопку на несколько прямоугольных частей.
Rectangular buttons are a button type, you can use the custom button type and assign an image to get rid of the rectangular edges of the button...heres a reference to button types http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/doc/c_ref/UIButtonType and to UIButton http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html