Поскольку у вас есть 2.2.2 .Net core SDK, вы принудительно устанавливаете версию ASP.Net, указав RuntimeFrameworkVersion
в вашем csproj
.
<PropertyGroup>
<RuntimeFrameworkVersion>2.2.2</RuntimeFrameworkVersion>
</PropertyGroup>
На практике не делайте этого.
Вместо этого добавьте кнопку с пользовательским стилем (без графики кнопок, если вы не укажете изображения) поверх UIImageView. Затем прикрепите к нему любые методы, которые вы хотите вызвать.
Вы можете использовать эту технику во многих случаях, когда вы действительно хотите, чтобы какая-то область экрана действовала как кнопка, а не возилась с Touch.
A UIImageView
получен из UIView
, полученный из UIResponder
, поэтому он готов обрабатывать события касания. Вам нужно предоставить методы touchesBegan
, touchesMoved
и touchesEnded
, и они будут вызываться, если пользователь коснется изображения. Если все, что вам нужно, это событие касания, проще просто использовать настраиваемую кнопку с изображением, установленным в качестве изображения кнопки. Но если вам нужен более точный контроль над нажатиями, перемещениями и т. Д., Это правильный вариант.
Вы также захотите рассмотреть еще несколько вещей:
Переопределить canBecomeFirstResponder
и вернуть ДА, чтобы указать, что представление может стать фокусом событий касания (по умолчанию - НЕТ).
Установите для свойства userInteractionEnabled
значение ДА. Значение по умолчанию для UIViews
- ДА, но для UIImageViews
- НЕТ, поэтому вам нужно явно включить его.
Если вы хотите реагировать на события мультитач (например, ущипнуть, масштабирование и т. д.) вы захотите установить multipleTouchEnabled
на ДА.
Что вы можете сделать, так это переопределить метод touchesBegan: withEvent:
класса UIView
(или подкласса), который содержит ваш UIImageView
subview.
В этом методе проверьте, попадает ли какое-либо из касаний UITouch
в границы экземпляра UIImageView
(скажем, он называется imageView
).
То есть пересекается ли элемент CGPoint
[touch locationInView]
с элементом CGRect
[imageView bounds]
? Посмотрите на функцию CGRectContainsPoint
, чтобы запустить этот тест.
Вместо того, чтобы создавать осязаемый UIImageView, а затем размещать его на панели навигации, вы должны просто создать UIBarButtonItem, который вы делаете из UIImageView.
Сначала создайте представление изображения:
UIImageView *yourImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"nameOfYourImage.png"]];
Затем сделайте элемент барной кнопки из представления изображения:
UIBarButtonItem *yourBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourImageView];
Затем добавьте элемент кнопки панели на панель навигации:
self.navigationItem.rightBarButtonItem = yourBarButtonItem;
Помните, что этот код входит в контроллер представления, который находится внутри массива viewcontroller контроллера навигации. Таким образом, этот «элемент сенсорной кнопки панели с изображением в виде изображения» будет отображаться на панели навигации только тогда, когда этот контроллер представления отображается при его отображении. Когда вы нажимаете другой контроллер представления, этот элемент кнопки панели навигации исчезает ~