Этот ответ вызвал некоторую ошибку в Swift 3, вот рабочий ответ:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.characters.count == 0 {
return true
}
do {
if textField == self.numberTextField {
let nString = textField.text as NSString?
let newString = nString?.replacingCharacters(in: range, with: string)
let expression = "^([0-9]+)?(\\.([0-9]{1,2})?)?$"
let regex = try NSRegularExpression(pattern: expression, options: .caseInsensitive)
let numberOfMatches = regex.numberOfMatches(in: newString! as String, options: [], range: NSRange(location: 0, length: (newString?.characters.count)!))
if numberOfMatches == 0 {
return false
}
}
}
catch let error {
}
return true
}
Если бы не USB, я бы подключил их через ЛВС и имел бы клиент-серверную программу C #, которая эмулирует клавиатуру / мышь (например, через DirectInput).
Для части USB, насколько я могу судить, вам понадобится некоторый аппаратный адаптер. Если вы занимаетесь разработкой аппаратного обеспечения или, по крайней мере, не боитесь паяльника и некоторого микроконтроллера, загляните на http://www.obdev.at/products/vusb/hidkeys.html , где HID Стек для небольшого чипа Atmel доступен бесплатно. Для этого решения вам понадобятся два чипа atmega, которые взаимодействуют через I²C или SPI или что-то подобное.
Я бы также порекомендовал электрическое разделение двух устройств. Вы никогда не знаете, имеют ли они одинаковое электрическое заземление или нет.