【问题标题】:IOS: Drag and Drop interaction without hiding the keyboardIOS:不隐藏键盘的拖放交互
【发布时间】:2019-04-25 12:55:43
【问题描述】:

设置:
我确实有一个派生自UIView 的类myView,它已正确设置为拖放(和拖放,但对于这个问题来说,拖放无关紧要)。这意味着UIDragInteraction 已注册视图view.addInteraction 并且拖放操作工作正常(具体的拖动项目和其他实现无关紧要)。

假设键盘显示在屏幕上(例如,因为UITextField 被选中并已成为第一响应者),通过触摸和拖动对象来启动拖动交互总是会关闭键盘。在拖动项被抬起并被用户移动后,解除发生。

我的问题:如何避免在发生拖动交互时关闭键盘?

进一步调查:
我假设拖动交互以某种方式调用resignFirstResponder()UITextField,但即使通过在子类中覆盖它来禁用resignFirstResponder 并让替代品什么也不做也不会阻止键盘被关闭。

【问题讨论】:

  • 您好,您的UITextField 是否包含在 UIScrollView 中?
  • @JadGhadry 是的。

标签: ios swift drag-and-drop


【解决方案1】:

用于启用 splitView 和多任务到自定义视图(UKWebView)拖放交互

提供完整的源代码和文档 http://blogs.specialapps.in/SplitView_MultiTasking

【讨论】:

    【解决方案2】:

    假设,在您的场景中,您在选中的 UIScrollView 中有一个 UITextField。您可以从对应的UIScrollView 访问keyboardDismissMode,并将其值设置为.none

    示例

    在您的UIViewController 中,声明对UIScrollView 的引用并通过您的故事板连接它。

    @IBOutlet weak var scrollView: UIScrollView!
    

    然后,在viewDidLoad() 方法中,按照上面声明的方式设置属性。

    override func viewDidLoad() {
    
        super.viewDidLoad()
    
        // Configure UIScrollView
        self.scrollView.keyboardDismissMode = .none
    
    }
    

    【讨论】:

    • 如果我错了请纠正我,但我认为keyboardDismissMode 用于拖动滚动视图本身,而不是通过UIDragInteraction 进行拖动操作。此外,.none 选项是UIScrollView 的默认设置。所以至少我不能让这个选项影响拖放行为。我在这里错过了什么吗?
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多