ユーザーが画面から指を離さずに UIButton 内のタッチを検出する方法はありますか?
例: 2 つのボタンがあり、ユーザーが左のボタンをタップしてから右のボタンに指をドラッグした場合、アプリケーションは右のボタンをタップしていることを認識する必要があります。
ユーザーが画面から指を離さずに UIButton 内のタッチを検出する方法はありますか?
例: 2 つのボタンがあり、ユーザーが左のボタンをタップしてから右のボタンに指をドラッグした場合、アプリケーションは右のボタンをタップしていることを認識する必要があります。
これは、既存のボタン イベントを使用して実行できるはずです。たとえば、「タッチ ドラッグ アウトサイド」、「タッチ アップ アウトサイド」、「タッチ ドラッグ エグジット」などです。
これらのイベントに登録して、どのイベントがあなたのニーズに合っているかを確認してください。
UIViewControllerを使用してこれを自分で実装します。
ボタンを使用する代わりに。
画面に2つのビュー(ボタンごとに1つ)を配置します。これらのボタン、imageViews、またはUIViewsのいずれかを作成できますが、必ずuserInteractionEnabled = NO;
。
次に、UIViewControllerでメソッドtouchesBegan
とを使用しtouchesMoved
ます。
私はviewControllerにいくつかの状態を保存します...
BOOL trackTouch;
UIView *currentView;
次に、touchesBeganがビューの1つに含まれている場合...
-(void)touchesBegan... (can't remember the full name)
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
if (CGRectContainsPoint(firstView, point)) {
trackTouch = YES
//deal with the initial touch...
currentView = firstView; (work out which view you are in and store it)
} else if (CGRectContainsPoint(secondView, point)) {
trackTouch = YES
//deal with the initial touch...
currentView = secondView; (work out which view you are in and store it)
}
}
次にtouchesMovedで...
- (void)touchesMoved... (can't remember the full name)
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
if (CGRectContainsPoint(secondView, point) and currentView != secondView)) {
// deal with the touch swapping into a new view.
currentView = secondView;
} else if (CGRectContainsPoint(firstView, point) and currentView != firstView)) {
// deal with the touch swapping into a new view.
currentView = firstView;
}
}
とにかくこのようなもの。