小编Tac*_*Lee的帖子

UITextInputDelegate方法无法正常运行

我现在正在使用iOS 8自定义键盘扩展,使用UITextInputDelegate方法时存在一些问题.

这是否正确:selectionWillChange:selectionDidChange:当用户长按输入区域时应该调用方法?并且textWillChange:textDidChange:方法应该在文本字面改变时调用?

实际上,我观察到的是,当我在文本输入区域中更改选择时,会调用textWillChange:和textDidChange:,并且我无法得到其他两个方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.

ios8 ios-app-extension custom-keyboard

13
推荐指数
1
解决办法
1828
查看次数

UICollectionView动画单元超出范围

我设置了UICollectionView具有以下设置的:

  • collectionView适合屏幕范围
  • 仅应用垂直滚动
  • 大多数单元格适合内容的宽度
  • 一些单元可以在用户交互中动态更改其高度(动画)

它几乎类似于UITableView,在大多数情况下都可以正常工作,除了在特定情况下不应用动画时例外。

例如,在堆叠的单元格中collectionView,上部单元格之一会扩展其高度。然后下部单元必须向下移动以保持距离。如果此移动单元的目标框架超出collectionView's范围,则不会应用任何动画,并且该单元会消失。

相反的情况以相同的方式进行;如果下部单元格的源帧超出屏幕边界(当前在边界之外),并且上部单元格应缩小,则不会应用任何动画,而只会出现在目标帧上。

这似乎在由所控制的内存管理逻辑中是适当的UICollectionView,但与此同时,没有自然的向用户显示某些内容只是突然出现或消失的事实。我已经用UITableView对此进行了测试,并且发生了同样的事情。

有没有解决此问题的方法?

animation ios uicollectionview uicollectionviewcell uicollectionviewlayout

7
推荐指数
1
解决办法
432
查看次数

iOS8自定义键盘问题

我现在正在开发iOS 8自定义键盘扩展,还有一些我无法弄清楚的问题.

首先,我认为UITextInputDelegate方法没有按照我的预期运作.

这听起来是正确的:selectionWillChange:selectionDidChange:方法应该当用户长时间打字印刷机区域叫什么名字?而textWillChange:textDidChange:方法应该每当文字字面上改变被称为?

实际上,我观察到的是,当我在文本输入区域中更改选择textWillChange:并被textDidChange:调用时,我无法得到其他两种方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.

其次,我知道该playInputClick:方法可用于虚拟化自定义键盘中的键盘点击声.由于这适用于正常情况,我发现无法在iOS 8自定义键盘扩展中应用.我的应用程序包含一个键盘视图控制器,以及将子类UIView添加到此视图控制器的自定义视图.我的方法是UIInputViewAudioFeedback在此自定义视图中声明委托,enableInputClicksWhenVisible方法返回YES,[[UIDevice currentDevice] playInputClick]设置调用的类方法,然后在需要键盘声音的任何地方调用此方法:这根本不起作用.

我的方法有什么不对吗?如果有人成功使用playInputClick方法,请分享你的智慧.

谢谢

keyboard ios ios8 ios-app-extension custom-keyboard

3
推荐指数
1
解决办法
2687
查看次数

`SwiftUI` - `EnvironmentObject`、`EnvironmentValues` 不会传播到模态呈现的 `UIViewController`

SwiftUI如果视图层次结构设置正确,EnvironmentObjectEnvironmentValues应该传播到子级 - 这对于纯视图层次结构的情况似乎是正确的SwiftUIUIKit当父视图控制器字面上包含其子视图时(例如;UITabViewController、 、 ...) ,情况混合也是如此UINavigationController

但是视图层次结构UIKit上模态呈现的视图控制器SwiftUI不会从其父级获取环境。这是我的设置。

// ContentView
struct ContentView: View {

    var body: some View {
        TabBarController()
            .environment(\.lineLimit, 3) // override default value of lineLimit
    }

}

// TabBarController
struct TabBarController: UIViewControllerRepresentable {

    typealias UIViewControllerType = UITabBarController

    func makeUIViewController(context: Context) -> UIViewControllerType {
        let uiViewController = UITabBarController()
        uiViewController.setViewControllers([
            UIHostingController(rootView: FooBar()),
            UIHostingController(rootView: FooBar()),
            UIHostingController(rootView: FooBar())
        ], animated: false)
        return uiViewController
    }

    func …
Run Code Online (Sandbox Code Playgroud)

uikit ios swift swiftui

3
推荐指数
1
解决办法
446
查看次数