как я могу обнаружить сенсорное событие UIImageView

Поскольку у вас есть 2.2.2 .Net core SDK, вы принудительно устанавливаете версию ASP.Net, указав RuntimeFrameworkVersion в вашем csproj.

<PropertyGroup>
    <RuntimeFrameworkVersion>2.2.2</RuntimeFrameworkVersion>
</PropertyGroup>
97
задан TheNeil 22 May 2019 в 14:53
поделиться

4 ответа

На практике не делайте этого.

Вместо этого добавьте кнопку с пользовательским стилем (без графики кнопок, если вы не укажете изображения) поверх UIImageView. Затем прикрепите к нему любые методы, которые вы хотите вызвать.

Вы можете использовать эту технику во многих случаях, когда вы действительно хотите, чтобы какая-то область экрана действовала как кнопка, а не возилась с Touch.

137
ответ дан 24 November 2019 в 05:19
поделиться

A UIImageView получен из UIView , полученный из UIResponder , поэтому он готов обрабатывать события касания. Вам нужно предоставить методы touchesBegan , touchesMoved и touchesEnded , и они будут вызываться, если пользователь коснется изображения. Если все, что вам нужно, это событие касания, проще просто использовать настраиваемую кнопку с изображением, установленным в качестве изображения кнопки. Но если вам нужен более точный контроль над нажатиями, перемещениями и т. Д., Это правильный вариант.

Вы также захотите рассмотреть еще несколько вещей:

  • Переопределить canBecomeFirstResponder и вернуть ДА, чтобы указать, что представление может стать фокусом событий касания (по умолчанию - НЕТ).

  • Установите для свойства userInteractionEnabled значение ДА. Значение по умолчанию для UIViews - ДА, но для UIImageViews - НЕТ, поэтому вам нужно явно включить его.

  • Если вы хотите реагировать на события мультитач (например, ущипнуть, масштабирование и т. д.) вы захотите установить multipleTouchEnabled на ДА.

115
ответ дан 24 November 2019 в 05:19
поделиться

Что вы можете сделать, так это переопределить метод touchesBegan: withEvent: класса UIView (или подкласса), который содержит ваш UIImageView subview.

В этом методе проверьте, попадает ли какое-либо из касаний UITouch в границы экземпляра UIImageView (скажем, он называется imageView ).

То есть пересекается ли элемент CGPoint [touch locationInView] с элементом CGRect [imageView bounds] ? Посмотрите на функцию CGRectContainsPoint , чтобы запустить этот тест.

3
ответ дан 24 November 2019 в 05:19
поделиться

Вместо того, чтобы создавать осязаемый UIImageView, а затем размещать его на панели навигации, вы должны просто создать UIBarButtonItem, который вы делаете из UIImageView.

Сначала создайте представление изображения:

UIImageView *yourImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"nameOfYourImage.png"]];

Затем сделайте элемент барной кнопки из представления изображения:

UIBarButtonItem *yourBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourImageView];

Затем добавьте элемент кнопки панели на панель навигации:

self.navigationItem.rightBarButtonItem = yourBarButtonItem;

Помните, что этот код входит в контроллер представления, который находится внутри массива viewcontroller контроллера навигации. Таким образом, этот «элемент сенсорной кнопки панели с изображением в виде изображения» будет отображаться на панели навигации только тогда, когда этот контроллер представления отображается при его отображении. Когда вы нажимаете другой контроллер представления, этот элемент кнопки панели навигации исчезает ~

6
ответ дан 24 November 2019 в 05:19
поделиться
Другие вопросы по тегам:

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