【问题标题】:When I tap on a image its not working properly from iphone 5s当我点击图像时,它在 iphone 5s 上无法正常工作
【发布时间】:2016-03-12 22:59:54
【问题描述】:
I added an image to a button. I am using gestures for animating the image in my sample app. It was working fine with iPhone 4, 4s, and 5 but the problem arise from iphone 5s.

` -(void)awakeFromNib
 {
  [super awakeFromNib];

   UITapGestureRecognizer *tapGestureRecognizer =                  [[UITapGestureRecognizer alloc] initWithTarget:self     action:@selector(characterImagedTapped)];

 self.characterImageView.userInteractionEnabled = YES;
 [self.characterImageView addGestureRecognizer:tapGestureRecognizer];

}

这里是characterImagedTapped函数,

' -(void) characterImagedTapped { if ([self.delegate respondsToSelector:@selector(didCharacterTapped:)]) [self.delegate performSelector:@selector(didCharacterTapped:)]; } ' 这个函数正在调用 didCharacterTapped。

When I tapped on the button it will call didCharacterTapped function it's implementation as below:
-(void)didCharacterTapped:(BOOL)tapped    
{
    if (tapped && !isCharacterAnimating) {
        [self startWelcomeBackCharacterAnimation];
    }
}`

如果点击值为 YES,它将调用 startWelcomeBackCharacterAnimation。如果为 NO,它将跳过并且图像不会被动画化。

实际上,当我点击按钮时,点击的布尔值应该是 YES,但从 iPhone 5s 版本开始,点击的布尔值总是显示 NO。

【问题讨论】:

  • -(void) characterImagedTapped { if ([self.delegate respondsToSelector:@selector(didCharacterTapped:)]) [self.delegate performSelector:@selector(didCharacterTapped:)]; } 这个函数正在调用 didCharacterTapped。
  • UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(characterImagedTapped)];self.characterImageView.userInteractionEnabled = YES; [self.characterImageView addGestureRecognizer:tapGestureRecognizer]; } 这个函数调用 characterImagedTapped 函数
  • 不要将代码放入 cmets。请根据需要更新您的问题。

标签: ios iphone-5


【解决方案1】:
-(void) characterImagedTapped
{
    if ([self.delegate respondsToSelector:@selector(didCharacterTapped:)]) {
        [self.delegate performSelector:@selector(didCharacterTapped:) withObject:[NSNumber numberWithBool:YES]];
    }
    else {
        [self.delegate performSelector:@selector(didCharacterTapped:) withObject:[NSNumber numberWithBool:NO]];
    }
}

-(void)didCharacterTapped:(NSNumber *)tapped
{
     if (tapped.boolValue) {
    //[self startWelcomeBackCharacterAnimation];
     }
    else {
    }
}

您可以使用对象执行选择器,并且在选择器中您可以按照上面的代码访问对象值

【讨论】:

  • 我需要检查抽头值,如果是,则必须进行动画处理,否则不应该。
【解决方案2】:

形成您的评论,我可以看到您将tapGestureRecognizer 设置为特定的imageview,即self.characterImageView

尝试将其分配给characterImageView中的parentview

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(characterImagedTapped)];
[self.characterImageView setUserInteractionEnabled:YES];
[self.view addGestureRecognizer:tapGestureRecognizer];

【讨论】:

  • 我试过这个我收到错误“在 JJVCCharacterView 类型的对象上找不到属性'视图'”
  • 这里的JJVCCharacterView是什么?
  • JJVCCharacterView 是我返回手势代码的实现文件
  • UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(characterImagedTapped)]; self.characterImageView.userInteractionEnabled = YES; [self.characterImageView addGestureRecognizer:tapGestureRecognizer];这段代码是用 JJVCCharacterView.m 编写的,所以我收到错误,因为在 JJVCCharacterView 类型的对象上找不到属性“视图”。
  • ok.. 你能告诉我 JJVCCharacter 的子类吗?它的 UIViewController 或 NSObject
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2018-12-27
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
相关资源
最近更新 更多