【问题标题】:Open a UIImagePicker from a UIImageView从 UIImageView 打开 UIImagePicker
【发布时间】:2011-07-08 22:50:36
【问题描述】:

我正在编写一个简单的应用程序,其中有一个 UIImageView,当点击它时,应该打开一个 UIImagePickerController,一旦选择了一个图像,就应该将该图像分配给 UIImageView

我首先对 UIImageView 进行子类化,然后给它一个 touchesBegan,它会打开一个 ImagePicker。

我的问题是,既然只有 UIViewController 可以调用 presentModalViewController 来显示 imagePicker,我该怎么做呢?

让你的视图引用它的控制器是糟糕的设计(尽管我猜我的 imageview 是一个子视图)。所以我不知道如何将消息传递给控制器​​。

另一个选项是首先检测控制器中的触摸,但我能看到的唯一方法是判断触摸是否在图像视图上,实际测试触摸是否在图像视图的框架内。这种方法对我来说似乎很笨拙......我是否遗漏了一些明显的东西?

任何关于使用哪种方法的想法,或任何关于更好方法的建议将不胜感激!谢谢!

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch ios4


    【解决方案1】:

    您不一定需要继承 UIImageView 来执行此操作。您可以将它作为您的主要UIView 的子视图用于某些UIViewController,并将UIGestureRecognizer 添加到UIImageView。然后,点击或滑动UIImageView 触发器的方法将在您的UIViewController 中,因此您可以轻松地从那里呈现模态视图。

    【讨论】:

    • 这看起来是最干净的解决方案。我试试看
    【解决方案2】:

    当您初始化 UIImageView 子类时,将引用传递给加载图像视图的视图控制器。

    然后,您在 UIImageView 上的 touchup 可以使用该视图控制器调用 presentModalViewController。

    【讨论】:

      【解决方案3】:

      Objective C 的做法是声明一个自定义委托,由您的视图控制器实现。因此,对于您的情况,它将只有一个方法,例如 viewTapped。让您的自定义类在单击时调用此委托方法。

      然后让你的视图控制器实现这个委托,并在委托方法被调用时启动模态视图控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        相关资源
        最近更新 更多