【问题标题】:how to pass touchesBegan from UIScrollView to UIViewController如何将 touchesBegan 从 UIScrollView 传递给 UIViewController
【发布时间】:2011-09-16 20:47:57
【问题描述】:

实际上,我想将数据从一个视图推送到另一个视图。我有一个 UIScrollView,上面有图像。现在我想将数据从该视图推送到其他视图,因为每当我触摸该图像视图时,我都想选择位置并将该位置推送到其他视图。 UIScrollView 没有 navigationController 无法推送。

UIScrollView 位于 UIViewController 类之上。有没有办法将 UITouch 从 UIScrollView 发送到 UIViewController 类并让该类推送视图或者我必须解决一些问题。

我有以下 UIScrollView 类的代码,

ImageScrollView.m

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *t = [touches anyObject];
CGPoint touchInScrollView = [t locationInView:imageView];
NSLog(@"x: %f", floor(touchInScrollView.x));
NSLog(@"Y : %f", floor(touchInScrollView.y));

    /****Cant be done since pushViewController is not allowed in UIScrollView.****/

DetailViewController *newView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:newView animated:YES];

}

【问题讨论】:

    标签: iphone objective-c uiviewcontroller uiscrollview uitouch


    【解决方案1】:

    将此属性添加到 ImageScrollView.h

    @property (nonatomic, retain) IBOutlet UIViewController* parentVC;
    

    在 ImageScrollView.m 中 @implementation 之后添加这一行

    @synthesize parentVC;
    

    将此行添加到 ImageScrollView.m 中的 - (void)dealloc 方法

    [parentVC release];
    

    如果您以编程方式创建 ImageScrollView,则在视图控制器中创建后:

    imageScrollViewYouJustMade.parentVC = self;
    

    如果您在 Interface Builder 中创建 ImageScrollView,请将 parentVC outlet 连接到 File's Owner。

    要推送一个新的视图控制器,在 ImageScrollView.m 中

    [self.parentVC.navigationController pushViewController:newView animated:YES];
    

    这是另一种选择,

    如果不了解您的应用程序的更多信息,我不能肯定地说,但一般来说,如果我有一个包含我想要点击的图像的滚动视图,我会使用 UIButton 而不是 UIImageView,并执行类似的操作

    btnImage = [UIImage imageNamed:@"image.png"];
    [btn setImage:btnImage forState:UIControlStateNormal];
    

    如果您不是以编程方式创建按钮,您还可以通过将属性检查器中的类型更改为自定义来将图像设置为背景,并将背景属性更改为所需的图像。

    使用按钮而不是图像视图将允许您将按钮的 touchDown 出口连接到主视图控制器中的 IBAction 方法,如下所示:

    - (IBAction)smileyFaceButtonTapped:(UIButton*)sender;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2021-01-31
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多