我有一个viewController
EditMessage,它有两个UITextFields
(UITextView),它们使用键盘,效果很好。这部分是基本的标准内容。当显示键盘时,我为整个view
注册了标记手势,这样如果用户点击其他任何地方,我就会关闭键盘:
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self,
action: #selector(dismissKeyboard)))
在dismissKeyboard中,一切正常:
@objc func dismissKeyboard(sender: Any) {
self.view.endEditing(true)
}
但是,我在同一个EditMessage视图中有一个菜单按钮(缩略图)作为子视图控制器(UIViewController
)实现,它通过UIApplication.shared.keyWindow()
劫持屏幕以显示覆盖和菜单屏幕的底部。使用 Brian Voong的 YouTube频道中的模型/代码构建,从底部复制菜单中的YouTube风格幻灯片。但是,键盘挡路了。由于孩子是一个不同的视图控制器“endEditing”不起作用(或者我可能引用了错误的视图?)。
class ButtonPickerController : UIViewController,
UIGestureRecognizerDelegate, UINavigationControllerDelegate {
var maxSize = CGFloat(60)
let thumbnail: UIImageView = {
let thumbnail = UIImageView()
thumbnail.backgroundColor = UIColor.lightGray
return thumbnail
}()
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(self.buttonTapped(sender:)))
tap.delegate = self
view.addGestureRecognizer(tap)
//view.backgroundColor = .yellow
view.contentMode = .scaleAspectFit
thumbnail.frame = CGRect(x: 0, y: 0, width: self.maxSize, height: self.maxSize)
setupSubviews()
}
有人能指出我的方向吗?这是我的第一个问题,希望我能正确地提出这个问题。
答案 0 :(得分:1)
我最终想通了。感谢您的帮助。在我的子视图控制器中,我在点击按钮时使用了以下语句:
{{1}}
答案 1 :(得分:0)
首先,它不是将叠加层显示为viewDidLoad
的好方法。
但是一个解决方案是好的,在调用Segue
之前给第二个viewcontroller引用第一个。你使用prepare
吗?所以在UITapGestureRecognizer
中将是正确的地方。在第二个viewcontroller中,您为第一个创建属性,然后在创建import csv
import argparse
import os, sys
from django.core.files import File
from django.core.management.base import BaseCommand
from django.utils import timezone
from django.conf import settings
from custom_photo.models import CustomPhoto, CustomPhotoPlate, CustomPhotoType
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--csv', nargs='?', type=argparse.FileType('r'))
def handle(self, *args, **options):
path = os.path.dirname(os.path.realpath(options['csv'].name))
with options['csv'] as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
photo_path = '%s/%s' %(path, row[0])
with open(photo_path, 'rb') as f:
django_file = File(f)
photo = CustomPhoto()
photo.title=row[1]
photo.file = django_file
photo.save()
print(photo.__dict__)
时将此属性用作目标。
另一种方法是使用协议和委托。