我现在正在使用iOS 8自定义键盘扩展,使用UITextInputDelegate方法时存在一些问题.
这是否正确:selectionWillChange:和selectionDidChange:当用户长按输入区域时应该调用方法?并且textWillChange:和textDidChange:方法应该在文本字面改变时调用?
实际上,我观察到的是,当我在文本输入区域中更改选择时,会调用textWillChange:和textDidChange:,并且我无法得到其他两个方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.
我设置了UICollectionView具有以下设置的:
它几乎类似于UITableView,在大多数情况下都可以正常工作,除了在特定情况下不应用动画时例外。
例如,在堆叠的单元格中collectionView,上部单元格之一会扩展其高度。然后下部单元必须向下移动以保持距离。如果此移动单元的目标框架超出collectionView's范围,则不会应用任何动画,并且该单元会消失。
相反的情况以相同的方式进行;如果下部单元格的源帧超出屏幕边界(当前在边界之外),并且上部单元格应缩小,则不会应用任何动画,而只会出现在目标帧上。
这似乎在由所控制的内存管理逻辑中是适当的UICollectionView,但与此同时,没有自然的向用户显示某些内容只是突然出现或消失的事实。我已经用UITableView对此进行了测试,并且发生了同样的事情。
有没有解决此问题的方法?
animation ios uicollectionview uicollectionviewcell uicollectionviewlayout
我现在正在开发iOS 8自定义键盘扩展,还有一些我无法弄清楚的问题.
首先,我认为UITextInputDelegate方法没有按照我的预期运作.
这听起来是正确的:selectionWillChange:和selectionDidChange:方法应该当用户长时间打字印刷机区域叫什么名字?而textWillChange:和textDidChange:方法应该每当文字字面上改变被称为?
实际上,我观察到的是,当我在文本输入区域中更改选择textWillChange:并被textDidChange:调用时,我无法得到其他两种方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.
其次,我知道该playInputClick:方法可用于虚拟化自定义键盘中的键盘点击声.由于这适用于正常情况,我发现无法在iOS 8自定义键盘扩展中应用.我的应用程序包含一个键盘视图控制器,以及将子类UIView添加到此视图控制器的自定义视图.我的方法是UIInputViewAudioFeedback在此自定义视图中声明委托,enableInputClicksWhenVisible方法返回YES,[[UIDevice currentDevice] playInputClick]设置调用的类方法,然后在需要键盘声音的任何地方调用此方法:这根本不起作用.
我的方法有什么不对吗?如果有人成功使用playInputClick方法,请分享你的智慧.
谢谢
SwiftUI如果视图层次结构设置正确,EnvironmentObject则EnvironmentValues应该传播到子级 - 这对于纯视图层次结构的情况似乎是正确的SwiftUI。UIKit当父视图控制器字面上包含其子视图时(例如;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)