У меня есть пользовательский 3D -зритель объектов на iOS, который позволяет пользователям вращать модель, используя сенсорный экран или трекпад и поддерживает Coasting (Spinning Momentum). Мне нужно остановить анимацию в прибрежном борьбе, как только пользователь прикоснится, но я могу немедленно обнаружить штрихи на самом экране - на трекпаде я не могу получить немедленное уведомление о прикосновениях. Это только стреляет только после небольшого движения на сенсорном экране и трекпаде. Это состояние никогда не происходит во время цикла жестов. Это не заставило Touchesbegan Fire для косвенных штрихов. Кто -нибудь знает, как поймать начальный контакт с трекпадом - до какого -либо движения - на косвенном устройстве ввода? На сенсорном экране вы увидите сообщение в тот момент, когда вы касаетесь представления, но трекпад не запускает какие -либо сообщения, пока ваши пальцы не перемещаются. Любой совет был бы очень признательен. < /P>
import UIKit
class ViewController: UIViewController {
private let debugView = DebugView()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// Fill the screen with our debug view
debugView.frame = view.bounds
debugView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
debugView.backgroundColor = UIColor(white: 0.95, alpha: 1)
view.addSubview(debugView)
// Attach a pan recognizer that logs its state
let panGR = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
panGR.allowedScrollTypesMask = .all
debugView.addGestureRecognizer(panGR)
}
@objc private func handlePan(_ gr: UIPanGestureRecognizer) {
switch gr.state {
case .possible:
print("Pan state: possible")
case .began:
print("Pan state: began")
case .changed:
print("Pan state: changed – translation = \(gr.translation(in: debugView))")
case .ended:
print("Pan state: ended – velocity = \(gr.velocity(in: debugView))")
case .cancelled:
print("Pan state: cancelled")
case .failed:
print("Pan state: failed")
@unknown default:
print("Pan state: unknown")
}
}
}
class DebugView: UIView {
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
for t in touches {
let typeDesc: String
switch t.type {
case .direct: typeDesc = "direct (finger)"
case .indirectPointer: typeDesc = "indirectPointer (trackpad/mouse)"
case .indirect: typeDesc = "indirect (Apple TV remote)"
case .pencil: typeDesc = "pencil (Apple Pencil)"
@unknown default: typeDesc = "unknown"
}
print("touchesBegan on DebugView – touch type: \(typeDesc), location: \(t.location(in: self))")
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... y-stop-coa
Как обнаружить переходную передачу iPad Trackpad (непрямой позиции), чтобы немедленно прекратить анимацию в прибрежении ⇐ IOS
Программируем под IOS
1745539791
Anonymous
У меня есть пользовательский 3D -зритель объектов на iOS, который позволяет пользователям вращать модель, используя сенсорный экран или трекпад и поддерживает Coasting (Spinning Momentum). Мне нужно остановить анимацию в прибрежном борьбе, как только пользователь прикоснится, но я могу немедленно обнаружить штрихи на самом экране - на трекпаде я не могу получить немедленное уведомление о прикосновениях. Это только стреляет только после небольшого движения на сенсорном экране и трекпаде. Это состояние никогда не происходит во время цикла жестов. Это не заставило Touchesbegan Fire для косвенных штрихов. Кто -нибудь знает, как поймать начальный контакт с трекпадом - до какого -либо движения - на косвенном устройстве ввода? На сенсорном экране вы увидите сообщение в тот момент, когда вы касаетесь представления, но трекпад не запускает какие -либо сообщения, пока ваши пальцы не перемещаются. Любой совет был бы очень признательен. < /P>
import UIKit
class ViewController: UIViewController {
private let debugView = DebugView()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// Fill the screen with our debug view
debugView.frame = view.bounds
debugView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
debugView.backgroundColor = UIColor(white: 0.95, alpha: 1)
view.addSubview(debugView)
// Attach a pan recognizer that logs its state
let panGR = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
panGR.allowedScrollTypesMask = .all
debugView.addGestureRecognizer(panGR)
}
@objc private func handlePan(_ gr: UIPanGestureRecognizer) {
switch gr.state {
case .possible:
print("Pan state: possible")
case .began:
print("Pan state: began")
case .changed:
print("Pan state: changed – translation = \(gr.translation(in: debugView))")
case .ended:
print("Pan state: ended – velocity = \(gr.velocity(in: debugView))")
case .cancelled:
print("Pan state: cancelled")
case .failed:
print("Pan state: failed")
@unknown default:
print("Pan state: unknown")
}
}
}
class DebugView: UIView {
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
for t in touches {
let typeDesc: String
switch t.type {
case .direct: typeDesc = "direct (finger)"
case .indirectPointer: typeDesc = "indirectPointer (trackpad/mouse)"
case .indirect: typeDesc = "indirect (Apple TV remote)"
case .pencil: typeDesc = "pencil (Apple Pencil)"
@unknown default: typeDesc = "unknown"
}
print("touchesBegan on DebugView – touch type: \(typeDesc), location: \(t.location(in: self))")
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79591587/how-to-detect-ipad-trackpad-touch-down-indirectpointer-to-immediately-stop-coa[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия