小编Mal*_*oni的帖子

当键盘出现在 SwiftUI 中时 OnAppear 意外调用

我在 SwiftUI 2.0 和 iOS14 中遇到了非常奇怪的行为。

当键盘出现在屏幕上时,会自动调用其他选项卡视图的 OnAppear 方法。

但是,这很好用 Xcode 11.7

这是行动中的问题。 TabView 中的 TextField

这是产生上述错误的代码。

struct ContentView: View {
    var body: some View {
        TabView {
            DemoView(screenName: "Home")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("Home")
                }
            DemoView(screenName: "Result")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("Result")
                }
            DemoView(screenName: "More")
                .tabItem {
                    Image.init(systemName: "star.fill")
                    Text("More")
                }
        }
    }
}

struct DemoView:View {
    
    @State var text:String = ""
    var screenName:String
    var body: some View {
        VStack{
            Text(screenName)
                .font(.title)
            
            TextField("Buggy Keyboard Issue", text: $text)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                
            Text("Issue : When keyboard …
Run Code Online (Sandbox Code Playgroud)

keyboard textfield tabview swiftui swiftui-tabview

24
推荐指数
1
解决办法
1102
查看次数

iOS 14 SwiftUI 键盘自动提升视图

我在我的视图中使用 TextField,当它成为第一响应者时,它会离开视图,如下面的 GIF 所示。

有什么办法可以摆脱这种行为吗?

在此处输入图片说明

这是我的代码

NavigationView(content: {
    ZStack{
        MyTabView(selectedIndex: self.$index)
            .view(item: self.item1) {
                NewView(title: "Hello1").navigationBarTitle("")
                    .navigationBarHidden(true)
            }
            .view(item: self.item2) {
                NewView(title: "Hello2").navigationBarTitle("")
                    .navigationBarHidden(true)
            }
            .view(item: self.item3) {
                NewView(title: "Hello3").navigationBarTitle("")
                    .navigationBarHidden(true)
            }
    }.navigationBarHidden(true)
    .navigationBarTitle("")
}).ignoresSafeArea(.keyboard, edges: .bottom)
Run Code Online (Sandbox Code Playgroud)

// 新视图

struct NewView:View {
    @State var text:String = ""
    var title:String
    var body: some View {
        VStack {
            Spacer()
            Text("Hello")
            TextField(title, text: self.$text)
                .textFieldStyle(RoundedBorderTextFieldStyle())
            
        }.padding()
        .onAppear {
            debugPrint("OnApper \(self.title)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

keyboard textfield swift swiftui ios14

12
推荐指数
5
解决办法
5953
查看次数

TabBar SwiftUI 2.0 中其他视图的键盘调用 OnAppear

我在 SwiftUI 2.0 和 Xcode 12 中使用 UITabBarController,但似乎键盘盒出现了一些意外行为。正如您从下面的 GIF 中看到的,当键盘出现在第一个选项卡中时,调用了其他 2 个选项卡视图的 OnAppear。这导致了这个问题,因为我有一个写在上面的 API 调用出现。

另外,有什么方法可以关闭 Xcode 12 的默认视图偏移行为。

在此处输入图片说明

这是我的内容视图代码。

struct ContentView: View {
    @State private var index:Int = 0
    var menuItems:[String] = ["Item 1", "Item 2", "Item 3"]
    var body: some View {
        NavigationView(content: {
            ZStack{
                MyTabView(selectedIndex: self.$index)
                    .view(item: self.item1) {
                        NewView(title: "Hello1").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
                    .view(item: self.item2) {
                        NewView(title: "Hello2").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
                    .view(item: self.item3) {
                        NewView(title: "Hello3").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
            }.navigationBarHidden(true)
            .navigationBarTitle("")
        })
    }
    
    var item1:MyTabItem {
        
        var item = …
Run Code Online (Sandbox Code Playgroud)

keyboard uitabbarcontroller tabview swift swiftui

9
推荐指数
1
解决办法
594
查看次数

iOS:如何在UITabBarItem中添加下划线

我正在一个应用程序中工作,我需要添加下划线UITabbarItem.

所以我想UITabbarItem在默认UITabbarcontroller的iOS 下添加下划线.

我已经创建了子类UITabbarcontroller但没有找到任何方法来添加行.

我想做像下图这样的事情.

UITabbarWithUnderline图像

如果有人对此有任何想法,请在这里分享.

xcode uitabbarcontroller uitabbaritem ios

6
推荐指数
2
解决办法
6192
查看次数

Clipped 实际上并没有剪辑 SwiftUI 中的图像

我正在尝试剪切图像,正如我们看到的 UI 一样,它看起来不错,但实际上它不会剪切图像,从而导致其他 UI 元素无响应。

在此输入图像描述

这是我正在使用的代码。

struct ImageContentView: View {
    var urls:[String] = [
        "https://lh3.googleusercontent.com/proxy/80im-IBfLODpLDj8d02uEpSVIhqdjen6H6CeFwgRBxeua-Dgw0R3WONFj1Gk8CwB_MufmC9rQ8qHjyWMejwFcJ1PA2s8AAu5WVsmJA=s0-d",
        "https://wallpaperaccess.com/full/530919.jpg"
    ] 
    var body: some View {
        ScrollView{
            VStack{
                Button(action: {
                    
                }, label: {
                    Text("Hello")
                })
                VStack(spacing: 20.0) {
                    ForEach(self.urls, id:\.self) { url in
                        WebImage(url: URL.init(string: url)!)
                            .resizable()
                            .aspectRatio(contentMode: ContentMode.fill)
                            .frame(height: UIScreen.main.bounds.size.width * 0.5) 
                            .clipped()
                            .cornerRadius(10.0)
                            .shadow(color: Color.red, radius: 10.0, x: 0, y: 0)
                    }
                }.padding()
            }
        }
    }
}    
Run Code Online (Sandbox Code Playgroud)

imageview clipped sdwebimage swiftui xcode11

6
推荐指数
1
解决办法
3773
查看次数

以编程方式在Mac OS X上创建L2TP VPN

我正在尝试使用Objective C使用适用于Mac OSX应用程序的L2TP协议连接到VPN的应用程序.

我对此进行了大量搜索,但未找到任何正确的示例或教程.

我找到了用于mac os vpn连接的halo/macosvpn,但它是我希望在我的应用程序中使用的命令行工具.

例如,如果我传递服务器ID,共享密钥,用户名,密码,那么我的mac应该自动连接到该VPN服务器.

任何帮助将不胜感激...

vpn objective-c system-preferences l2tp osx-yosemite

5
推荐指数
1
解决办法
672
查看次数

AVPlayer 和 AVAudioPlayer 不从 URL 播放音频

我试图从 URL 播放音频。我尝试了 AVPlayer 和 AVAudioPlayer 但它们都不起作用。

这是我正在尝试播放的URL

这是我正在使用的代码。

 // AVPlayer Code
 self.avPlayerItem = AVPlayerItem.init(url: urlOfAudio)
 self.avPlayer = AVPlayer.init(playerItem: avPlayerItem)
 self.avPlayer.volume = 1.0
 self.avPlayer.play()

 // AVAudioPlayer
 if let url = URL.init(string: escapeCharactorString){
      do {
           self.playerReference = try AVAudioPlayer.init(contentsOf: url)
           guard let player = playerReference else { 
               return
           }                    
           player.volume = 1.0
           player.prepareToPlay()
           player.numberOfLoops = -1                    
           player.play() 
      } catch let error {

      }
  }
Run Code Online (Sandbox Code Playgroud)

他们都没有为我工作。请让我知道我哪里出错了。

avfoundation avaudioplayer ios avplayer swift3

2
推荐指数
1
解决办法
5101
查看次数

使用形状 SwiftUI 裁剪矩形视图

我试图使视图的中心部分像相机覆盖层一样透明。如下图所示,中心部分是透明的,而其余区域是黑色且不透明的。

在此输入图像描述

我尝试了下面的代码。

Rectangle()
    .fill(Color.red.opacity(0.5))
    .mask(
        Ellipse()
            .fill(
                Color.green.opacity(0.5)
            )
            .padding()
    )
}
Run Code Online (Sandbox Code Playgroud)

但输出是这样的。

在此输入图像描述

任何帮助将不胜感激。

谢谢

xcode mask shapes swift swiftui

2
推荐指数
1
解决办法
1447
查看次数

NSWindow调整大小时调整表列大小

我正在使用NSTableView的Cocoa应用程序上工作。

现在,我希望通过用户从角落拖动应用程序或单击缩放按钮来在用户调整窗口大小或最大化窗口时自动调整表视图中列的宽度。

任何帮助将不胜感激。

macos cocoa nstableview nstablecolumn

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