首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPickerView作为inputView为UITextView斯威夫特

UIPickerView作为inputView为UITextView斯威夫特
EN

Stack Overflow用户
提问于 2018-05-16 06:14:46
回答 1查看 1.3K关注 0票数 1

我用UIPickerView作为inputView的UITextView。selectRow:函数没有为交替时间正确地选择

这是代码

代码语言:javascript
复制
func textViewDidBeginEditing(_ textView: UITextView) {
    let inputView = UIView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 240))
    let codePicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 240))
    codePicker.tag = 2

    if codePicker.dataSource == nil {
        codePicker.dataSource = self
    }
    if codePicker.delegate == nil {
        codePicker.delegate = self
    }

    codePicker.showsSelectionIndicator = true
    print("selectedBankRow: \(selectedRow)")
    codePicker.selectRow(selectedRow, inComponent: 0, animated: true)
    inputView.addSubview(codePicker)
    textView.inputView = inputView
    return
}

print语句打印正确的行,但是selectRow:函数选择前一个被选择的值,什么是错误?甚至状态栏也只会在每次UITextView交互中变黑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 07:02:19

不要每次都创建UIPickerView

创建全局对象

代码语言:javascript
复制
var codePicker = UIPickerView()

在viewDidLoad方法中

添加以下代码

代码语言:javascript
复制
let inputView = UIView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 240))
codePicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 240))
codePicker.tag = 2
codePicker.dataSource = self
codePicker.delegate = self

codePicker.showsSelectionIndicator = true
print("selectedBankRow: \(selectedRow)")
codePicker.selectRow(selectedRow, inComponent: 0, animated: true)
inputView.addSubview(codePicker)
textView.inputView = inputView

当您解决状态栏问题时

代码语言:javascript
复制
IQKeyboardManager.sharedManager().canAdjustAdditionalSafeAreaInsets = true

希望能帮上忙

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50363620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档