Я разместил изображение (UIImageView) на панели навигации. Теперь я хочу обнаружить событие касания и обработать это событие. Как я могу это сделать?
ios
iphone
uiimageview
uitouch
ebaccount
источник
источник
Ответы:
С практической точки зрения, не делайте этого.
Вместо этого добавьте кнопку с пользовательским стилем (без графики кнопок, если вы не укажете изображения) поверх UIImageView. Затем прикрепите к нему любые методы, которые вы хотите вызвать.
Вы можете использовать эту технику во многих случаях, когда вы действительно хотите, чтобы какая-то область экрана действовала как кнопка, а не возилась с Touch.
источник
A
UIImageView
является производным от,UIView
который является производным от,UIResponder
поэтому он готов обрабатывать события касания. Вы хотите , чтобы обеспечитьtouchesBegan
,touchesMoved
иtouchesEnded
методы , и они будут вызываться , если пользователь вводит изображение. Если все, что вам нужно, это событие касания, проще просто использовать настраиваемую кнопку с изображением, установленным в качестве изображения кнопки. Но если вам нужен более точный контроль над метчиками, перемещениями и т. Д., Это то, что вам нужно.Вы также захотите взглянуть на еще несколько вещей:
Переопределите
canBecomeFirstResponder
и верните YES, чтобы указать, что представление может стать фокусом событий касания (по умолчанию NO).Установите
userInteractionEnabled
свойство в YES. По умолчанию дляUIViews
YES, но дляUIImageViews
NO, поэтому вам нужно явно включить его.Если вы хотите реагировать на события мультисенсорного ввода (например, масштабирование, масштабирование и т. Д.), Вы должны установить
multipleTouchEnabled
ДА.источник
userInteractionEnabled
ДА в моем родительском представлении. См. Stackoverflow.com/questions/5887305/…Чтобы добавить событие касания в UIImageView, используйте в файле .m следующее:
источник
Вы также можете добавить UIGestureRecognizer. Это не требует от вас добавления дополнительных элементов в иерархию представлений, но все же предоставляет вам весь хорошо написанный код для обработки событий касания с довольно простым интерфейсом:
источник
Последние несколько часов я был в разных темах, пытаясь найти решение моей проблемы, но безрезультатно. Я вижу, что многие разработчики разделяют эту проблему, и я думаю, что люди здесь об этом знают. У меня есть несколько изображений внутри
UIScrollView
, я пытаюсь получить на них события касания.Я не получаю никаких событий от объекта
UIImangeView
, но я получаю событие от аналогичного объектаUILable
с очень похожими параметрами, которые я для него устанавливаю. Под iOS 5.1.Я уже сделал следующее:
UIImageView
.UIImageView
, не помогло.Прикрепив код ниже, в этом коде я инициализирую как, так
UIImageView
иUILabel
метку, которая отлично работает с точки зрения событий запуска. Я старался убрать ненужный код.И метод, обрабатывающий событие:
Как сказано, метка метка получена.
источник
Вместо того, чтобы создавать осязаемый UIImageView, а затем размещать его на панели навигации, вы должны просто создать UIBarButtonItem, который вы делаете из UIImageView.
Сначала сделайте просмотр изображения:
Затем сделайте элемент barbutton из представления изображения:
Затем добавьте элемент кнопки панели на панель навигации:
Помните, что этот код входит в контроллер представления, который находится внутри массива контроллера представления контроллера навигации. Таким образом, этот «элемент сенсорной кнопки панели, выглядящей как изображение» будет отображаться на панели навигации только тогда, когда этот контроллер представления отображается при его отображении. Когда вы нажимаете другой контроллер представления, этот элемент кнопки панели навигации исчезает.
источник
Возможно, вы захотите переопределить
touchesBegan:withEvent:
методUIView
(или подкласса), который содержит вашеUIImageView
вложенное представление.В этом методе проверьте,
UITouch
попадает ли какое-либо касание в границыUIImageView
экземпляра (допустим, он вызываетсяimageView
).То есть пересекается ли
CGPoint
элемент[touch locationInView]
сCGRect
элементом[imageView bounds]
? Посмотрите на функцию,CGRectContainsPoint
чтобы запустить этот тест.источник
Сначала вы должны разместить UIButton, а затем либо добавить фоновое изображение для этой кнопки, либо вам нужно разместить UIImageView поверх кнопки.
Или:
Вы можете добавить жест касания в UIImageView, чтобы получить действие щелчка при нажатии на UIImageView.
источник
Для тех из вас, кто ищет решение Swift 4 для этого ответа, вы можете использовать следующее для обнаружения события касания в UIImageView.
Затем вам нужно будет определить свой селектор следующим образом:
источник
Добавьте жест в это представление. Добавьте изображение в это представление, и тогда он также обнаружит жест на изображении. Вы можете попробовать использовать метод делегата сенсорного события. Тогда в этом случае это тоже может быть обнаружение.
источник