iOS:在不隐藏键盘的情况下进行拖放交互

3

背景:
我有一个从UIView派生而来的MyView类,已经正确设置为可拖拽(和拖放,但是这次问题与拖放无关)。这意味着一个UIDragInteraction已经在视图view.addInteraction中注册,拖放操作正常工作(特定的拖动项和其他实现不重要)。

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

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

进一步调查:
我认为拖动交互以某种方式调用resignFirstResponder()以使UITextField失去第一响应者,但即使在子类中覆盖resignFirstResponder并让替代品什么也不做,也不能防止键盘被关闭。


你好,你的 UITextField 是否包含在一个 UIScrollView 中? - Jad Ghadry
@JadGhadry 是的,没错。 - Wizard
2个回答

0

-1
假设您的场景中有一个被选中的UIScrollView内部包含一个UITextField。您可以从相应的UIScrollView中访问keyboardDismissMode并将其值设置为.none。
示例:
在您的UIViewController中,声明对UIScrollView的引用,并通过storyboard连接它。
@IBOutlet weak var scrollView: UIScrollView!

然后,在viewDidLoad()方法内,将属性设置为上面声明的值。

override func viewDidLoad() {

    super.viewDidLoad()

    // Configure UIScrollView
    self.scrollView.keyboardDismissMode = .none

}

请纠正我,但我认为keyboardDismissMode是用于拖动滚动视图本身,而不是通过UIDragInteraction进行拖动操作。此外,.none选项是UIScrollView的默认设置。因此,我无法使此选项影响拖放行为。我有什么遗漏吗? - Wizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接