0
touchesmovedが現在選択されているボタンのフレームを離れるときに、どのボタンを強調表示しないように設定できるかを調べようとしています。以下のコードを参照してください。以下のコードでは、3つのボタンのいずれかを個別に押してスワイプすることができます。私が抱えている問題は、ボタンがスウィープされたとき、例えばtouchesmovedを使用してボタンがアクションを呼び出すときですが、スワイプがボタンフレームを離れるときにボタンが戻らないように戻すことは決してありません。事前にtouchesmoved leave frame
おかげで、
AZZA
- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
for(UITouch *t in touches) {
CGPoint location = [t locationInView:t.view];
if((CGRectContainsPoint(Button1.frame, location)) && (!Button1.isHighlighted))
{
if (!Button1.isHighlighted){
[Button1 setHighlighted:YES];
[self doAction1];
}else{
[Button1 setHighlight:NO];
}
}
if((CGRectContainsPoint(Button2.frame, location)) && (!Button2.isHighlighted))
{
if (!Button2.isHighlighted){
[Button2 setHighlighted:YES];
[self doAction2];
}else{
[Button2 setHighlight:NO];
}
}
if((CGRectContainsPoint(Button3.frame, location)) && (!Button3.isHighlighted))
{
if (!Button3.isHighlighted){
[Button3 setHighlighted:YES];
[self doAction3];
}else{
[Button3 setHighlight:NO];
}
}
}
- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event {
for(UITouch *t in touches) {
CGPoint location = [t locationInView:t.view];
if(CGRectContainsPoint(Button1.frame, location))
{
if (!Button1.isHighlighted){
[Button1 setHighlighted:YES];
[self doAction1];
}
}
if(CGRectContainsPoint(Button2.frame, location))
{
if (!Button2.isHighlighted){
[Button2 setHighlighted:YES];
[self doAction2];
}
}
if(CGRectContainsPoint(Button3.frame, location))
{
if (!Button3.isHighlighted){
[Button3 setHighlighted:YES];
[self doAction3];
}
}
}
- (void)touchesEnded: (NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *t in touches){
CGPoint location = [t locationInView:self.view];
if(CGRectContainsPoint(Button1.frame, location)) {
[Button1 setHighlighted:NO];
} else if(CGRectContainsPoint(Button2.frame, location)) {
[Button2 setHighlighted:NO];
} else if(CGRectContainsPoint(Button3.frame, location)) {
[Button3 setHighlighted:NO];
}
}
}
しかし、今私はボタンをスワイプし、それらの両方の間で解放すると、最初の最初のボタンが強調表示されたままになります。コードia ddedは以下の通りですif(CGRectContainsPoint(Button1.frame、location))&& if(CGRectContainsPoint(Button1.frame、previouslocation))){[button1 setHighlighted:NO];}各ボタンにこれらのいずれかを追加しました –
OK私はこのまったく同じ問題を扱っていたことを知っている古いコードの塊で私の答えを更新しました。おそらく構造体の代わりにオブジェクトとして書くと、今使っているアプローチになります –
ありがとう、私は家に帰ると試してみると、どうすればいいのか教えてください –