xon*_*rlz 25 iphone objective-c uiimageview ipad ios
我有以下代码:
UITapGestureRecognizer *showStoryTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showNewsStory:)];
[showStoryTapRecognizer setDelegate:self];
[self.storyImageView_ addGestureRecognizer:showStoryTapRecognizer];
[showStoryTapRecognizer release];
Run Code Online (Sandbox Code Playgroud)
然而这并没有触发showNewsStory,为什么会这样呢?我在图像视图中启用了userInteraction.
Kju*_*uly 74
您应该为UIImageView对象启用用户交互:
[self.storyImageView_ setUserInteractionEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
尝试删除
[showStoryTapRecognizer setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
UITapGestureRecognizer据我所知,我认为它没有代表方法.
小智 53
UITapGestureRecognizer *oneTouch=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(OneTouchHandeler)];
[oneTouch setNumberOfTouchesRequired:1];
[imageView addGestureRecognizer:oneTouch];
imageView.userInteractionEnabled = YES;
Run Code Online (Sandbox Code Playgroud)
UIImageView是默认情况下禁用用户交互的UIView内部唯一子类UIKit.
我还注意到,在swift3中,如果要添加也要查找目标的手势识别器,而目标通常是self,则必须将要添加手势识别器的UIView设置为lazy var。否则,手势识别器将无法工作。我认为这是swift3中的错误。理想情况下,如果您在类完全初始化之前访问变量中的self,则它应该引发错误。以下代码无法检测到手势识别器。
let messageImageView: CachedImageView = {
let iv = CachedImageView()
iv.translatesAutoresizingMaskIntoConstraints = false
iv.layer.cornerRadius = 16
iv.layer.masksToBounds = true
iv.contentMode = .scaleAspectFill
iv.isUserInteractionEnabled = true
let zoomTap = UITapGestureRecognizer(target: self, action: #selector(handleZoomTap))
zoomTap.numberOfTapsRequired = 1
iv.addGestureRecognizer(zoomTap)
return iv
}()
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您必须使用 lazy var
lazy var messageImageView: CachedImageView = {
let iv = CachedImageView()
iv.translatesAutoresizingMaskIntoConstraints = false
iv.layer.cornerRadius = 16
iv.layer.masksToBounds = true
iv.contentMode = .scaleAspectFill
iv.isUserInteractionEnabled = true
let zoomTap = UITapGestureRecognizer(target: self, action: #selector(handleZoomTap))
zoomTap.numberOfTapsRequired = 1
iv.addGestureRecognizer(zoomTap)
return iv
}()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24130 次 |
| 最近记录: |